假设我们有以下的数据帧:获取列索引在数据帧
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
我们可以从它的索引选择列“B”:
> df[,2]
[1] 2 5 8
有没有一种办法从列标签('B')获取索引(2)?
假设我们有以下的数据帧:获取列索引在数据帧
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
我们可以从它的索引选择列“B”:
> df[,2]
[1] 2 5 8
有没有一种办法从列标签('B')获取索引(2)?
您可以通过grep
和colnames
获得指数:
grep("B", colnames(df))
[1] 2
或使用
grep("^B$", colnames(df))
[1] 2
只获取列被称为 “B” 没有那些谁装上B例如“ABC”。
你原来的例子的优势,可以在代码中,如果你表现出其类似DF [使用证明, grep(“^ B”,colnames(df))],即返回以“B”开头的数据帧列。如果您同意,请随时使用进一步的编辑。 – 2010-12-13 14:56:45
甚至df [,grep(“^ [BC]”,colnames(df))],即以B或C开头的列。 – 2010-12-13 15:03:33
@Dwin:@aix已经表示,提问者希望* index *。但我通常也会按照您描述的方式使用'grep'。 – Henrik 2010-12-13 16:05:43
我想看到所有的指数为colnames,因为我需要做一个复杂的column rearrangement,所以我打印的colnames的数据帧。 rownames是指数。
as.data.frame(colnames(df))
1 A
2 B
3 C
更简洁的方法是'cbind(names(df))'。 – lillemets 2018-02-12 11:35:52
见@ matthewdowle的回答这里最好的解决办法:http://stackoverflow.com/a/9277935/636656 – 2014-07-14 16:20:39