簡體   English   中英

如何將多個函數應用於數據框列表?

[英]How to apply multiple functions to a list of data frames?

我有一個包含 50 多個具有相同列數和行數的 csv 文件的列表。

我想找到每個數據框的缺失值百分比,並且我找到了適用於單個文件的代碼,如下所示:

missing.values <- estaciones2 %>% 
  gather(key = "key", value = "val") %>%
  mutate(is.missing = is.na(val)) %>%
  group_by(key, is.missing) %>%
  summarise(num.missing = n()) %>%
  filter(is.missing==T) %>%
  select(-is.missing) %>%
  arrange(desc(num.missing))

現在我想將這些函數應用於我列表中的每個數據框。

我讀到我可以使用 map 函數創建一個循環並為列表中的每個文件運行代碼,盡管我不太確定如何將 map 函數插入到上面顯示的代碼中,但我嘗試了以下操作似乎不對:

missing.values <- map(estaciones2, ~ map(estaciones2, ~ estaciones2 %>%
                        gather(key = "key", value = "val") %>%
                        mutate(is.missing = is.na(val)) %>%
                        group_by(key, is.missing) %>%
                        summarise(num.missing = n()) %>%
                        filter(is.missing==T) %>%
                        select(-is.missing) %>%
                        arrange(desc(num.missing)))

我們需要一個 lambda 函數 ( ~ ) 來循環list (假設estaciones2是一個list對象)。 .x是使用 lambda 調用的list的 data.frame 元素

library(purrr)
library(tidyr)
library(dplyr)
map(estaciones2, ~ .x %>%
                        gather(key = "key", value = "val") %>%
                        mutate(is.missing = is.na(val)) %>%
                        group_by(key, is.missing) %>%
                        summarise(num.missing = n()) %>%
                        filter(is.missing==T) %>%
                        select(-is.missing) %>%
                        arrange(desc(num.missing)))

在 OP 的代碼中,多次在同一個list元素上調用多個map函數,即estaciones2

暫無
暫無

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

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