繁体   English   中英

For循环将多列转换为R中的因子

[英]For loop to convert multiple columns to factors in R

我有几列需要转换为因子

for cols in ['col1','col2']:
  df$cols<-as.factor(as.character(df$cols))

错误

for cols in ['col1','col2']:
Error: unexpected symbol in "for cols"
>   df$cols<-as.factor(as.character(df$cols))
Error in `$<-.data.frame`(`*tmp*`, cols, value = integer(0)) : 
  replacement has 0 rows, data has 942

显示的语法还使用python for loop 和 python list 相反,它将是 `R 中的字符串vector

for (col in c('col1','col2')) {
       df[[col]] <- factor(df[[col]])
  }

注意:这里我们使用[[而不是$和大括号{} 可以直接应用factor而不是as.character换行


或者在可以轻松完成的地方使用lapply (不使用任何软件包)

df[c('col1', 'col2')] <- lapply(df[c('col1', 'col2')], factor)

或者在dplyr中,可以更轻松地完成

library(dplyr)
df <- df %>%
          mutate_at(vars(col1, col2), factor)

作为@akrun 解决方案的补充,使用data.table可以轻松完成:

library(data.table)
setDT(df)
df[,c("col1","col2") := lapply(.SD, function(c) as.factor(as.character(c))), .SDcols = c("col1","col2")]

请注意, df通过引用( := )更新,因此无需重新分配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM