我想编写一个通用脚本来查找与最终列相关的一组功能的信息增益。例如,在一个由26列矩阵构建的数据框中,我写道:
information.gain(V26~.,table)
问题是公式V26~。没有明显的通用形式。我的第一个想法是尝试这个:
> nms <- colnames(table)
> nms[length(nms)]
[1] "V26"
> information.gain(nms[length(nms)]~., table)
Error in model.frame.default(formula, data, na.action = NULL) :
variable lengths differ (found for 'V1')
由于nms是一个字符串向量,这似乎是错误的。有没有办法将名称强制转化为可以成为公式一部分的东西?
答案 0 :(得分:6)
这是一个简单的解决方案,使用虚拟数据
DF <- data.frame(matrix(runif(260), ncol = 26))
names(DF) <- paste0("V", seq_len(ncol(DF)))
在这里,我使用tail()
选择DF
中最后一列的名称,并从那里构建公式。
f <- as.formula(paste(tail(names(DF), 1), "~ ."))
> f
V26 ~ .
答案 1 :(得分:0)
修改以适应问题。您可以将数据框的最后一列放入单独的向量中,然后将其关联到函数中。例如,以下是使用列数的解决方案:
last_col&lt; - df [,ncol(df)]
功能(last_col~。,blah,blah等)
希望有所帮助!