Основной цикл в R
Попытка создать цикл для извлечения категориальных данных из столбцов 1:9 моего df:
Кажется, что-то вроде этого работает, но проблема в том, что возвращается только las i. Чего-то не хватает, чтобы сохранить каждый вывод после запуска цикла.
for (i in 1:9){
as.factor(df[,i]) -> paste("Category_",sep="_",i)
}
Я хотел бы в конечном итоге получить что-то вроде этого:
Category_1 <- df[,1]
Category_2 <- df[,2]
Category_3 <- df[,3]
...
Category_9 <- df[,9]
3 ответа
Решение
Ты можешь использовать assign
for (i in 1:9){
cat <- paste("Category_", i, sep = "")
assign(cat, as.factor(df[,i]))
}
Использование assign
, Особенно:
for (i in 1:9){
assign(paste("Category_",sep="_",i),as.factor(df[,i]))
}
Петля не нужна
Сначала несколько примеров данных
data(airquality)
df <- head(airquality, 4)
df
# Ozone Solar.R Wind Temp Month Day
# 41 190 7.4 67 5 1
# 36 118 8.0 72 5 2
# 12 149 12.6 74 5 3
# 18 313 11.5 62 5 4
Переименовать столбцы
colnames(df) <- paste0("Cat_", 1:ncol(df))
df
# Cat_1 Cat_2 Cat_3 Cat_4 Cat_5 Cat_6
# 41 190 7.4 67 5 1
# 36 118 8.0 72 5 2
# 12 149 12.6 74 5 3
# 18 313 11.5 62 5 4
… И разбить фрейм данных на отдельные векторы
list2env(df, envir=.GlobalEnv)
Cat_1
# 41 36 12 18
Cat_2
# 190 118 149 313
# .
# .
# .