是否有通用的方法来引用公式对象中R数据帧的最后一列?

时间:2013-07-22 22:42:09

标签: r

我想编写一个通用脚本来查找与最终列相关的一组功能的信息增益。例如,在一个由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是一个字符串向量,这似乎是错误的。有没有办法将名称强制转化为可以成为公式一部分的东西?

2 个答案:

答案 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等)

希望有所帮助!