如何防止 do.call() 打印模型中类“call”的所有数据框条目?

Ben*_*Ben 0 r random-forest

如果我使用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)

我确信有更好、更简单的解决方案,但我找不到。预先感谢您的任何帮助。

G. *_*eck 5

使用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)