假设我们有以下数据框:
> 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)?
答案 0 :(得分:95)
您可以通过grep
和colnames
获取索引:
grep("B", colnames(df))
[1] 2
或使用
grep("^B$", colnames(df))
[1] 2
仅获取名为" B"的列没有包含B的那些" ABC"
答案 1 :(得分:79)
以下将会这样做:
which(colnames(df)=="B")
答案 2 :(得分:7)
我想查看colnames的所有索引,因为我需要做一个复杂的column rearrangement,所以我将colnames打印为数据帧。 rownames是索引。
as.data.frame(colnames(df))
1 A
2 B
3 C
答案 3 :(得分:2)
这似乎是列出具有列号的变量的有效方法:
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/10.0.2/bootstrap-slider.min.js"></script>
</head>
输出:
cbind(names(df))
有时我喜欢将带位置的变量复制到我的代码中,所以我使用了这个函数:
[,1]
[1,] "A"
[2,] "B"
[3,] "C"
输出:
varnums<- function(x) {w=as.data.frame(c(1:length(colnames(x))),
paste0('# ',colnames(x)))
names(w)= c("# Var/Pos")
w}
varnums(df)
答案 4 :(得分:2)
接着上面的 chimeric's 回答:我还需要获取 df 中的 all 列索引,所以我使用了:>
which(!names(df)%in%c())
或存储在列表中
indexLst<-which(!names(df)%in%c())
答案 5 :(得分:0)
使用t
函数:
t(colnames(df))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "var1" "var2" "var3" "var4" "var5" "var6"
答案 6 :(得分:0)
match(“ B”,names(df))
如果有名称向量,也可以使用。
答案 7 :(得分:0)
这是一个可以概括 Henrik 答案的答案。
df=data.frame(A=rnorm(100), B=rnorm(100), C=rnorm(100))
numeric_columns<-c('A', 'B', 'C')
numeric_index<-sapply(1:length(numeric_columns), function(i)
grep(numeric_columns[i], colnames(df)))