#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