如何将相同的操作应用于dplyr-R中的多个数据帧?

Hid*_*o.S 1 r data-manipulation dplyr tidyverse

我想对“ R”中的多个数据帧应用相同的操作,但无法获得如何处理此问题的方法。

这是以下pipe操作的示例dplyr

library(dplyr)

    iris %>% mutate(Sepal=rowSums(select(.,starts_with("Sepal"))),
                    Length=rowSums(select(.,ends_with("Length"))),
                    Width=rowSums(select(.,ends_with("Width"))))
iris2 <- iris
iris3 <- iris
Run Code Online (Sandbox Code Playgroud)

你可以建议如何应用相同的管道功能irisiris2isis3?我需要使用dplyr管道操作。

我想map函数可能会有所帮助,但是由于我还没有完全理解它的概念,因此在应用它时遇到了错误。

示例脚本:

library(purrr)

iris.set <- c(iris,iris2,iris3)
map(iris.set, ~ . %>% mutate(Sepal=rowSums(select(.,starts_with("Sepal"))),
                Length=rowSums(select(.,ends_with("Length"))),
                Width=rowSums(select(.,ends_with("Width")))))
Run Code Online (Sandbox Code Playgroud)

ros*_*ova 5

如果将操作转换为功能:

library(dplyr)
my_fun <- function(x) { 
      x %>%       
          mutate(Sepal=rowSums(select(.,starts_with("Sepal"))),
          Length=rowSums(select(.,ends_with("Length"))),
          Width=rowSums(select(.,ends_with("Width"))))
}
Run Code Online (Sandbox Code Playgroud)

您可以轻松地通过管道将数据帧列表发送给它:

result <- list( iris, iris2, iris3 ) %>%
    lapply( my_fun )
Run Code Online (Sandbox Code Playgroud)