簡體   English   中英

如何將相同的操作應用於dplyr-R中的多個數據幀?

[英]How to apply same operation to multiple data frames in dplyr-R?

我想對“ R”中的多個數據幀應用相同的操作,但無法獲得如何處理此問題的方法。

這是dplyrpipe操作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

您能建議如何將相同的管道函數應用於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")))))

如果將操作轉換為功能:

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 )

對你有好處嗎?

    library(dplyr)

    #matrices replication 
    iris1=iris
    iris2=iris
    iris3=iris

    #list of combinations: apply is tricky for array input
    irises=matrix(c("iris1","iris2","iris3"), ncol=1)

    #function design
    Funct<-function(df_name){

      df=get(df_name)
      df %>% mutate(Sepal=rowSums(select(.,starts_with("Sepal"))),
                    Length=rowSums(select(.,ends_with("Length"))),
                    Width=rowSums(select(.,ends_with("Width"))))
    }

    apply(irises,MARGIN=2, Funct)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM