4

我想编写一个通用脚本来查找一组特征相对于最后一列的信息增益。例如,在一个由 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 是字符串的向量,这似乎是错误的。有没有办法将名称强制转换为公式的一部分?

4

2 回答 2

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 ~ .
于 2013-07-22T23:04:30.210 回答
0

修改以适应问题。您可以将数据框的最后一列放入单独的向量中,然后将其关联到您的函数中。例如,这是一个使用列数的解决方案:

last_col <- df[,ncol(df)]

功能(last_col ~ .,等等,等等)

希望有帮助!

于 2015-02-05T18:02:23.333 回答