将列名称从文本字符串放入包公式的语法

时间:2018-03-21 16:34:47

标签: r dataframe syntax

我试图通过让用户选择在R闪亮界面中使用哪些参数来为模型动态做出输入。

旧的静态代码如下所示:

randomForest(factor(carb) ~ mpg + cyl + disp + hp, data = mtcars, ntree = 10, na.action = na.omit)

使用mtcars数据集。

对于新版本,〜之后使用的列将来自UI界面选项将是要使用的列名称的向量:

pars <-  c('mpg', 'cyl', 'disp', 'hp')

如何更改randomForest等式的语法,使其在pars的向量上运行,这样无论向量是什么,它都将自动运行在界面用户选择的列上。服务器端?

1 个答案:

答案 0 :(得分:1)

as.formula()可以为您提供帮助。

frm <- as.formula(paste("factor(carb) ~ ", paste(pars, collapse= "+"))) 
frm
factor(carb) ~ mpg + cyl + disp + hp

randomForest(frm, data = mtcars, ntree = 10, na.action = na.omit)

Call:
 randomForest(formula = frm, data = mtcars, ntree = 10, na.action = na.omit) 
               Type of random forest: classification
                     Number of trees: 10
No. of variables tried at each split: 2

        OOB estimate of  error rate: 31.25%
Confusion matrix:
  1 2 3 4 6 8 class.error
1 5 0 0 2 0 0   0.2857143
2 5 5 0 0 0 0   0.5000000
3 0 0 3 0 0 0   0.0000000
4 1 0 0 9 0 0   0.1000000
6 0 0 0 1 0 0   1.0000000
8 0 0 0 1 0 0   1.0000000