Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带as.factor()的R公式:有没有办法将参数指定为变量内容而不是直接按名称?_R - Fatal编程技术网

带as.factor()的R公式:有没有办法将参数指定为变量内容而不是直接按名称?

带as.factor()的R公式:有没有办法将参数指定为变量内容而不是直接按名称?,r,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 >

为了进行下面的讨论,我将创建此假训练数据帧:

> 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
> 
我试图从多个数据帧中训练多个kernlab KSVM模型,类似于上面所示的数据帧。对于每个数据帧,
result
列的名称实际上是不同的(它是根据使用该数据集训练的模型所预测的内容命名的)

我对R还是相当陌生,所以我使用的语法只是在我从Crattle的日志选项卡剪切和粘贴代码之后建模的(没有双关语):

trainedModel = ksvm(as.factor(result) ~ ., data=dataset[,c(input, target), ...)
…其中,
result
数据集
数据框中列的名称。我知道,
as.factor(result)~.
是一个公式,这意味着
~
左侧的内容是从
~
右侧的内容派生而来的,
只是意味着“在
~
左侧没有指定的所有其他内容”。至少我认为这就是它的意思

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


如何在代码
as.factor(result)

中指定“colnames(dataset)[1]”(即动态确定的列名称,而不知道编码时的列名称),允许您使用
粘贴
来构建公式。将这些因素放在一起,可以创建基于变量的公式,例如:

as.formula(paste("as.factor(",result_column,") ~ ."))

我可能误解了你,但我认为
as.formula(粘贴(…)
就是你要找的。您可以在生成变量时使用
paste()
构建公式。@BrandonBertelsen好的,非常感谢,
as.formula(paste0(“as.factor”(,colnames(dataset)[1],”~))
工作得很好。你想发布一个答案,还是这是一个如此愚蠢的简单问题,你认为我应该把它删除。我同意,@BrandonBertelsen应该将此作为回答。我认为这很有帮助。一个问题有一个简单的答案并不意味着其他人不会有同样的问题