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

是否有一种通用方法来引用公式对象中R数据帧的最后一列?,r,R,我想编写一个通用脚本,以查找与最后一列相关的一组特性的信息增益。例如,在一个由26列矩阵构建的数据框中,我会写: information.gain(V26~.,table) 问题是公式V26~。没有明显的泛型形式。我的第一个想法是尝试一下: > nms <- colnames(table) > nms[length(nms)] [1] "V26" > information.gain(nms[length(nms)]~., table) Error in model.f

我想编写一个通用脚本,以查找与最后一列相关的一组特性的信息增益。例如,在一个由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 nms[长度(nms)]
[1] “V26”
>信息.增益(nms[长度(nms)]~,表)
model.frame.default(公式、数据、na.action=NULL)中出错:
可变长度不同(适用于“V1”)

这似乎是错误的,因为nms是字符串的向量。有没有办法将名称强制转换为公式的一部分?

这里有一个简单的解决方案,使用虚拟数据

DF <- data.frame(matrix(runif(260), ncol = 26))
names(DF) <- paste0("V", seq_len(ncol(DF)))

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


最后一列
公式粘贴在一起,然后将
用作.formula
。现在我觉得自己很傻。事实上,粘贴和as.formula。谢谢。@JohnDoucette今天早些时候我在这篇文章中有一个这样的例子。我在这里发布了一个答案,因为其他的问答不完全相同。也不要说这里经常提到对象的最后一件事或元素。如果结果是关闭的,请不要感到惊讶。虽然没有回答问题所提出的问题,但这是一个由带有嵌入对象列的公式生成的对象。您的问题回答了另一个问题,即如何提取数据帧最后一列的内容。我建议写一个问题,你可以提供答案,因为我在任何地方都找不到这个问题(可能在某个地方,但找不到)
f <- as.formula(paste(tail(names(DF), 1), "~ ."))

> f
V26 ~ .