【发布时间】:2014-03-13 22:42:27
【问题描述】:
我正在尝试以通用方式对最后一列进行一些操作。
我在论坛上发现了一段很好的代码,它返回最后一列的名称:
tail(names(train),1) #returns [1] "last"
我仍然不知道如何直接引用我的数据集的最后一列:
data$last
【问题讨论】:
标签: r
我正在尝试以通用方式对最后一列进行一些操作。
我在论坛上发现了一段很好的代码,它返回最后一列的名称:
tail(names(train),1) #returns [1] "last"
我仍然不知道如何直接引用我的数据集的最后一列:
data$last
【问题讨论】:
标签: r
只需使用ncol() 即可获取最后一列的索引
data[,ncol(data)]
【讨论】:
x[, ncol(x), with = FALSE] 或使用 ".." ix <- ncol(x); x[, ..ix ]。
取列名的reversed 向量的第一个元素:
rev(names(mtcars))[1]
[1] "carb"
同样,要获取最后一列,您可以使用
rev(mtcars)[1]
【讨论】:
参考最后一栏:
colnames(data)[ncol(data)]
【讨论】:
我更喜欢@Troy 的解决方案,这是另一种方式:
train[, tail(colnames(train), 1)]
【讨论】:
train[,'last'] 有效; zx的方案更灵活。
Troy's answer 更简单,并且可以使用“:”运算符调整为在最后一列之前引用“n”个元素。
如果你想参考最后三列,你可以这样写:
data[,ncol(data)] # refers to the last column
data[,(ncol(data)-2):ncol(data)] # refers to the three last columns
【讨论】:
来自tidyselect 包的函数last_col() 可能会有所帮助。另请参阅此处的答案
【讨论】:
你可以使用tail,但你必须强制列出:
tail(as.list(mtcars), 1)
这将返回一个包含列内容的向量。如果要保留结构,可以使用:
utils:::tail.default(mtcars, 1)
以便tail 将输入视为列表。真正使用这种方法而不是 Troy 的唯一原因是,如果您想要的不仅仅是最后一列(即最后 N),那么这样做会变得容易得多。
【讨论】:
list(data.frame) 获取列名.. 好吧,我没有将R 用于通用编程,所以只需记住这些“有趣”的东西