我试图将dataframedf
in中的所有字符列转换为各自具有有效R名称级别的因子,使用lapply
withlevels, factor
andmake.names
in其参数,如下所示:
levels(df[, cols]) <- lapply(cols, function(x) make.names(levels(factor(df[, x]))))
cols
is是一个字符列名称的向量。这不起作用。如果我只想将它们转换为因子,而不用担心级别名称,那么语法就更简单了
df[, cols] <- lapply(cols, function(x) factor(df[, x]))
确实有效。我究竟做错了什么?
我想出了一个比我希望的更复杂的方式:
func <- function(x){
df[, x] <- factor(df[, x])
levels(df[, x]) <- make.names(levels(df[, x]))
df[, x]
}
df[, cols] <- lapply(cols, func)