根据R中的列数据获取列名

时间:2017-03-21 14:27:44

标签: r indexing which

我试图根据R中的内容获取data.frame列的名称。 例如,在

dd= data.frame(col1=c(1,2,3), col2=c(4,5,6), col3=c(4,4,4))

当我提供col1时,我正在寻找能够返回c(1,2,3)的内容。

我找到了这个advice elsewhere,但它对我不起作用;按照建议,我试试这个

colnames(dd)[which(dd == c(1,2,3), arr.ind = TRUE)] 
colnames(dd)[which(dd == c(1,2,3), arr.ind = TRUE)[2]] 

它会返回各种各样的东西,这里是第一个结果:

[1] "col1" "col2" "col3" "col1" "col1" "col1"
  • 最好的方法是什么?

  • 上述方法是否正确;你能解释一下究竟是什么吗?

  • 我很惊讶在这里找不到任何东西;如果它是重复的,我会很高兴链接/搜索条款。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

使用identical的一种方式,

names(dd)[sapply(dd, function(i)identical(i, c(1, 2, 3)))]
#[1] "col1"

names(dd)[sapply(dd, function(i)identical(i, c(4, 5, 6)))]
#[1] "col2"