在数据框中使用与make.names的lapply

问题描述 投票:0回答:1

我试图将dataframedfin中的所有字符列转换为各自具有有效R名称级别的因子,使用lapplywithlevels, factorandmake.namesin其参数,如下所示:

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

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

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

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

r dataframe lapply r-factor
1个回答
0
投票

我想出了一个比我希望的更复杂的方式:

func <- function(x){
  df[, x] <- factor(df[, x])
  levels(df[, x]) <- make.names(levels(df[, x]))
  df[, x]
}
df[, cols] <- lapply(cols, func)
© www.soinside.com 2019 - 2024. All rights reserved.