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)
你可以建议如何应用相同的管道功能iris,iris2和isis3?我需要使用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)
如果将操作转换为功能:
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)