我正在尝试将数据框df
中的所有字符列转换为具有有效R名称级别的因子,并在其参数中使用lapply
levels, factor
和make.names
,如下:
levels(df[, cols]) <- lapply(cols, function(x) make.names(levels(factor(df[, x]))))
cols
是字符列名称的向量。这不起作用。如果我只想将它们转换为因子,而不用担心级别名称,那么语法更简单
df[, cols] <- lapply(cols, function(x) factor(df[, x]))
确实有效。我做错了什么?
答案 0 :(得分:0)
我想出了一个比我希望的更复杂的方式:
func <- function(x){
df[, x] <- factor(df[, x])
levels(df[, x]) <- make.names(levels(df[, x]))
df[, x]
}
df[, cols] <- lapply(cols, func)