如果我使用do.call()以列表形式提供的参数来运行模型,则随模型返回的“调用”会列出参数的任何数据框中的所有条目。这将为大型数据集打印极长的模型输出。
library(randomForest)
data(iris)
do.call(randomForest, list(Species ~ ., data=iris))
#Call:
# randomForest(formula = Species ~ ., data = structure(list(Sepal.Length = c(5.1, 4.9, 4.7,
#4.6, 5, 5.4, 4.6, 5, 4.4, 4.9, 5.4, 4.8,...
Run Code Online (Sandbox Code Playgroud)
是否可以阻止打印数据帧条目,以便输出与正常模型调用相匹配,例如随机森林?
randomForest(Species ~ ., data=iris)
#Call:
# randomForest(formula = Species ~ ., data = iris)
Run Code Online (Sandbox Code Playgroud)
我可以尝试在分配模型对象中的“调用”槽后重建并替换它,或者将其设置为NULL,但这似乎是一个糟糕的解决方案。
mod <- do.call(randomForest, list(Species ~ ., data=iris))
mod$call <- 'randomForest(formula = Species ~ ., data = iris)'
mod
#Call:
# "randomForest(formula = Species ~ ., data = iris)"
Run Code Online (Sandbox Code Playgroud)
我确信有更好、更简单的解决方案,但我找不到。预先感谢您的任何帮助。
使用quote:
do.call("randomForest", list(Species ~ ., data = quote(iris)))
Run Code Online (Sandbox Code Playgroud)
给予:
Call:
randomForest(formula = Species ~ ., data = iris)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 2
OOB estimate of error rate: 4.67%
Confusion matrix:
setosa versicolor virginica class.error
setosa 50 0 0 0.00
versicolor 0 47 3 0.06
virginica 0 4 46 0.08
Run Code Online (Sandbox Code Playgroud)