2015-07-13 85 views
0

最近一直在处理许多不同的数据集,并需要快速识别不同列的列号。例如,我有一个包含75个变量(或列)的数据集。我需要使用的变量位于数据集的中间,我知道这些变量的名称,即g,h,I,j和k。而不是每次我想使用它们或更改或引用他们,我通常使用的列数即R列编号

for (i in 35:39) { do bla bla bla} 

通常的方式,我觉得列数是我看数据帧写这些变量的名称和数列,直到我到达我想要的那一列,然后我计算他们中有多少人得到我的35:39。有一个更好的方法吗?有没有更好的方法来找出列/变量g是列号35和列/变量k是#39?

+0

我认为有几种方法。这只是一个黑客:'cbind(1:ncol(iris),names(iris))'它返回一个矩阵,第1列等于列号,第2列矩阵名称为第“n”列。 – SabDeM

+0

我喜欢这个想法,生病得试一试 – James

回答

3

只是我评论的扩展版本。正如我所说有几种方式可以这样做,我不认为是正确的。这是一个可能的解决方案(如果我得到你想要的东西当然)。

as.data.frame(cbind(column = 1:ncol(iris),names = names(iris))) 
    column  names 
1  1 Sepal.Length 
2  2 Sepal.Width 
3  3 Petal.Length 
4  4 Petal.Width 
5  5  Species 

以这种方式,你知道什么名字在哪一列对应。

2

如果你想看到哪些列被命名为g你可以做

which(names(mydataframe) == 'g') 

它给你列的名称为“G”的指标。

+1

或者,grep(“g”,names(mydataframe)) – lawyeR

0

您可以使用match而不是which,因为您只需要一列匹配(我认为它会更快)。

match('g',names(mydataframe))