Как получить доступ к имени столбца, который является числом, через переменную

#r #dataframe

#r #фрейм данных

Вопрос:

Проблема: я не могу выбрать столбец фрейма данных через переменную, если столбец является числом. Пример:

 library(dplyr)
df = data.frame(a=c(1,2,3),b=c(4,5,6)) #Create a dataframe

colnames(df) <- c("99","66") #Column names are numbers (let's say the id of something)
  

Я могу сделать это:

 print(df$`99`[1])
  

Но я не могу этого сделать:

 k <- 99
print(df$`k`[1])
  

Причина, по которой я пытаюсь использовать переменную для доступа к имени столбца, заключается в том, что я хочу перебирать имена столбцов:

 for (i in colnames(df)){
  df$"i"
  df[,i]
}
  

Комментарии:

1. Преобразуйте его в символ, чтобы избежать вычисления как числового индекса df[[as.character(k)]][1] . Если вы используете df[[k]] , он ищет 99-й столбец

2. Чтобы добавить к замечанию @akrun, обычно мы используем $ только в интерактивном режиме, или если имя столбца каким-то образом всегда одно и то же. [[ это инструмент, если вы обращаетесь к столбцам фрейма данных программно.

3. Удалите df$"i" из вашего for цикла, и он должен работать как есть, потому что colnames(df) уже имеют тип character

Ответ №1:

Вы можете просто сделать-

 > k=99
> df[[paste0(k)]]
[1] 1 2 3
  

Просто для получения дополнительных разъяснений по вашему for loop

 cols <- c(99,66)
for(i in 1:length(cols))
{
   print(df[[paste0(cols[i])]])
}
  

Вывод-

 [1] 1 2 3
[1] 4 5 6