Основной цикл в 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

# .
# .
# .
Другие вопросы по тегам