gpt4 book ai didi

r - 获取调用对象,更改参数并使用新参数再次运行

转载 作者:行者123 更新时间:2023-11-30 08:50:22 24 4
gpt4 key购买 nike

我有一个从随机森林生成的模型。在它内部,有一个名为 call 的属性,它将为我提供实际上是 randomForest 调用的函数。

我想获取这个参数,从模型中删除一列,然后再次运行它。

例如:

library(randomForest)
data(iris)
iris.rf <- randomForest(Species~.-Sepal.Length, data=iris, prox=TRUE)
iris.rf$call

# want to remove the field Sepal.length as well
# the call should be then
# randomForest(Species~.-Sepal.Length-Sepal.Width, data=iris, prox=TRUE)

我尝试转换为列表,粘贴新参数,然后再次将其添加到 iris.rf[[2]],但它粘贴到公式的所有部分。

我无法摆脱类调用,无法更改它,然后调用 eval() 再次运行它。

最佳答案

您可以在 paste0 对象上使用 parse 来获取新表达式。然后,您可以将该新对象评估为调用。

也许是这样的:

> iris.rf$call[[2]][3] <- parse(text = with(iris.rf, {
paste0(call[[2]][3], " - ", rownames(importance)[1])
}))
> eval(iris.rf$call)
#
# Call:
# randomForest(formula = Species ~ . - Sepal.Length - Sepal.Width,
# data = iris, prox = TRUE)
# Type of random forest: classification
# Number of trees: 500
# No. of variables tried at each split: 1
#
# OOB estimate of error rate: 3.33%
# Confusion matrix:
# setosa versicolor virginica class.error
# setosa 50 0 0 0.00
# versicolor 0 47 3 0.06
# virginica 0 2 48 0.04

请注意,不推荐使用 eval(parse(text = ...)),尽管它确实非常适合这项工作。

关于r - 获取调用对象,更改参数并使用新参数再次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com