使用as.factor()的R公式:任何方式将参数指定为变量内容而不是直接按名称?

pho*_*ger 5 r

为了下面的讨论,我将创建这个假的训练数据框:

> dataset = data.frame(result=c("yes","yes","no","no","no"),
                       s1=seq(0,8,2), s2=seq(1,9,2))
> dataset
  result s1 s2
1    yes  0  1
2    yes  2  3
3     no  4  5
4     no  6  7
5     no  8  9
> 
Run Code Online (Sandbox Code Playgroud)

我正在尝试从类似于上面所示的多个数据帧训练多个kernlab KSVM模型.result实际上,对于每个数据框,该列的名称都是不同的(它是根据该数据集训练的模型应该预测的名称命名的).

我仍然是R的新手,所以我正在使用的语法只是在我从Rattle的日志选项卡中剪切和粘贴的代码之后建模(没有双关语):

trainedModel = ksvm(as.factor(result) ~ ., data=dataset[,c(input, target), ...)
Run Code Online (Sandbox Code Playgroud)

... ... 数据框中result列的名称dataset.我明白这as.factor(result) ~ .是一个公式,这意味着它的左侧的东西~是以某种方式从右侧的东西中得到的~,而这.只是意味着"其他一切未在左侧指定的~".至少我认为这意味着什么.

我的问题是我希望能够以编程方式创建和训练这些模型,并且输入数据集中目标列的名称将会改变.

如何在代码中指定"colnames(dataset)[1]"(即,在编码时不知道列名称的情况动态确定列的名称)as.factor(result)

Bra*_*sen 6

?as.formula,允许您使用构建公式paste.将这些放在一起可以创建基于变量的公式,例如:

as.formula(paste("as.factor(",result_column,") ~ ."))
Run Code Online (Sandbox Code Playgroud)