Ответ 1
вы можете получить индекс через grep
и colnames
:
grep("B", colnames(df))
[1] 2
или используйте
grep("^B$", colnames(df))
[1] 2
чтобы получить столбцы, называемые "B", без тех, кто содержит B, например. "ABC".
Скажем, у нас есть следующий фрейм данных:
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
Мы можем выбрать столбец "B" из его индекса:
> df[,2]
[1] 2 5 8
Есть ли способ получить индекс (2) из метки столбца ('B')?
вы можете получить индекс через grep
и colnames
:
grep("B", colnames(df))
[1] 2
или используйте
grep("^B$", colnames(df))
[1] 2
чтобы получить столбцы, называемые "B", без тех, кто содержит B, например. "ABC".
Это сделает следующее:
which(colnames(df)=="B")
Мне хотелось увидеть все индексы для colnames, потому что мне нужно было выполнить сложную перестановку столбцов , поэтому я напечатал имена кодов в качестве фрейма данных. Имена ростов - это индексы.
as.data.frame(colnames(df))
1 A
2 B
3 C
Исходя из вышеприведенного химерного ответа:
Чтобы получить ВСЕ индексы столбцов в df, поэтому я использовал:
which(!names(df)%in%c())
или хранить в списке:
indexLst<-which(!names(df)%in%c())
Кажется, это эффективный способ перечислить vars с номером столбца:
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)
Вывод:
# Var/Pos
# A 1
# B 2
# C 3
Используйте функцию t
:
t(colnames(df))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "var1" "var2" "var3" "var4" "var5" "var6"