R调用字符串以在函数中查找

R调用字符串以在函数中查找,r,string,R,String,我正在尝试调用e1071 svm函数的列名。 工作代码如下所示: model = svm(Air_Flow~., data = trainset) 但为了使其更加自动化,我将其更改为: coi=44 model = svm(colnames(data)[coi]~., data = trainset) 在哪里 由于(我认为)引号的原因,这不起作用,因此我尝试: 获取(colnames(data)[coi]) 猫(…) 打印(…,引号=F) as.name(…) 解析(…) 只有get()

我正在尝试调用e1071 svm函数的列名。 工作代码如下所示:

model = svm(Air_Flow~., data = trainset)
但为了使其更加自动化,我将其更改为:

coi=44
model = svm(colnames(data)[coi]~., data = trainset)
在哪里

由于(我认为)引号的原因,这不起作用,因此我尝试:

  • 获取(colnames(data)[coi])
  • 猫(…)
  • 打印(…,引号=F)
  • as.name(…)
  • 解析(…)
只有get()起作用了,但当我尝试使用模型预测其他值时,它并没有起作用。有什么建议可以让它工作吗


谢谢

公式不是可以“粘贴”变量的字符串。变量名与字符串也不相同。您需要注意如何构建表达式,以确保使用正确的类型。公式实际上是以名称/符号作为参数的未计算调用

您可以考虑使用<代码> BQuoTE()<代码>来构建公式表达式,并确保将变量名的字符版本转换为一个适当的变量名,使用<代码> AS .NAMEL()/代码>

是的,这有点难看。这就是为什么允许公式的函数通常也有一个更容易编程的替代接口
svm()
还允许您为响应和预测器传入
x
y
参数。你可以

model = svm(trainset[,col], trainset[,-col])
这更好,因为您可以使用字符串和数字索引从数据集中子集列

model = svm(trainset[,col], trainset[,-col])