我有三个具有相同结构的数据框。我想对每个任务执行相同的任务,例如将因子变量重新格式化为数字变量。
假设每个数据框由十个变量组成,其中五个具有类因子,我希望它们是数字。这是我试过的。
all.df <- list(df1, df2, df3)
factors <- sapply(all.df[[1]], is.factor)
all.df <- lapply(all.df, function(x) {
lapply(x[factors], as.numeric(as.character(x)) })
问题在于,这种方式我最终只得到all.df中的因子变量,而我仍然想要其他(非因子,而不是重新格式化)变量。
答案 0 :(得分:0)
尝试:
all.df <- lapply(all.df, function(x) {
x[factors] <-lapply(x[factors], function(x) as.numeric(as.character(x)))
x})
str(all.df[[1]])
#'data.frame': 5 obs. of 3 variables:
# $ col1: num 6 7 8 9 10
# $ col2: num 1 2 3 4 5
# $ col3: int 1 2 3 4 5
df <- data.frame(col1=factor(6:10),col2=factor(1:5), col3=1:5)
all.df <- list(df,df,df)
factors <- sapply(all.df[[1]], is.factor)