有没有办法将数据框的列名称作为变量引用,而不是字符串(在R中)?假设我想获得数据帧df的第一列名称 . 代码colnames返回...
> colnames(df)[[1]]
[1] "colname1"
我问的原因是我很难将函数子集推广到任何数据帧 . 假设我希望在具有已知条件的数据框上执行条件子集,但我不知道运行时的列名(只是列号) . 示例 -
> df<-data.frame( x=c(1:3), y=c(4:6))
> df.sub <- subset(df, df$y >5 )
但是让我说在运行时我不知道df的列名,只是它的列号为2.函数调用
> df.sub <- subset(df, colnames(df)[[2]] >5 )
不起作用,因为colnames返回一个字符串,子集是'smart',并在df中查找对象名称 . 这有什么好办法吗?我可以使用[而不是我觉得问题会是一样的 .
1 回答
您应该能够成功使用双方括号作为名称或索引号:
但是,请从帮助页面注意以下内容:
subset
:并且,为了给出一些不好的建议,你也可以使用
get
:正如@Roland在评论中指出的那样,大多数R用户实际上会使用以下内容: