替换R中每个数据帧中的所有因子变量

替换R中每个数据帧中的所有因子变量,r,R,我有三个结构相同的数据帧。我想对每个变量执行相同的任务,比如将因子变量重新格式化为数值变量 假设每个数据帧由十个变量组成,其中五个有类因子,我希望它们是数值。这是我试过的 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.charact

我有三个结构相同的数据帧。我想对每个变量执行相同的任务,比如将因子变量重新格式化为数值变量

假设每个数据帧由十个变量组成,其中五个有类因子,我希望它们是数值。这是我试过的

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中,我只使用因子变量,而我仍然需要其他非因子变量,而不是重新格式化的变量

试试看:

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
数据 替换后在函数中调用x是关键。
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)