在数据框

时间:2017-12-10 19:14:52

标签: r dataframe lapply r-factor

我正在尝试将数据框df中的所有字符列转换为具有有效R名称级别的因子,并在其参数中使用lapply levels, factormake.names,如下:

levels(df[, cols]) <- lapply(cols, function(x) make.names(levels(factor(df[, x]))))

cols是字符列名称的向量。这不起作用。如果我只想将它们转换为因子,而不用担心级别名称,那么语法更简单

df[, cols] <- lapply(cols, function(x) factor(df[, x]))

确实有效。我做错了什么?

1 个答案:

答案 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)