[英]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.