我想对R' 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
您能否建议如何将相同的管道功能应用于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")))))
答案 0 :(得分:4)
如果您将操作变为功能:
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"))))
}
您可以轻松地将数据框列表传送给它:
result <- list( iris, iris2, iris3 ) %>%
lapply( my_fun )
答案 1 :(得分:1)
对你有好处吗?
<div class="sq-tri">
<div class="tri tri-down" data-location="top"></div>
<div class="tri tri-right" data-location="left"></div>
<div class="tri tri-left" data-location="right"></div>
<div class="tri tri-up" data-location="bottom"></div>
</div>