首页 > 解决方案 > 将函数应用于列表中数据框的特定列

问题描述

我有一个包含需要合并的公共列的数据框列表,但我需要在合并之前先将某些列强制转换为字符类型。为了解决这个问题,我写了以下内容:

master_list <- lapply(master_list, function(x) x %>%
                     mutate_at(.vars = vars(master_list$x$'send date',
                                            master_list$x$'send time',
                                            master_list$x$'Monthly',
                                            master_list$x$'InteractionEventDate'),
                               .funs = as.character))

但是,当我查看列表中任何一个数据框中的这些列时,没有进行更改(例如 InteractionEventDate 仍然是双精度),尽管上面的代码行没有引发错误。我部分基于这篇文章的答案,它使用了现在已弃用的 mutate_each。

标签: r

解决方案


你的方法在这里有点迂回。所以也许首先使用dplyr逻辑定义一个函数,然后将它应用到列表中?

premerge <- function(df){
            df %>%
               mutate_at(.vars = c("send date","send time", "Monthly","InteractionEventDate"), .funs = as.character)                        
              }

lappyl(master_list,premerge)

推荐阅读