Примените один и тот же фильтр к нескольким фреймам данных в разных средах. - PullRequest
1 голос
/ 21 марта 2019

У меня есть несколько больших sf объектов, которые живут в Глобальной среде, пока выполняется основной код. Этот основной код вызывает create_foo_map функции, которые используют отфильтрованные версии больших sf объектов, а также импортируют / создают свои собственные меньшие sf объекты, к которым должны применяться те же фильтры. В идеале фильтр должен работать внутри create_foo_map и оставлять крупные объекты в глобальной среде нетронутыми.

Этот пост list2env привел меня к чему-то вроде следующего, который применяет один и тот же фильтр ко всем наборам данных, но для его работы в двух средах потребуется много настроек.

library(dplyr)
library(purrr)

set.seed(100)


volcano1 <- sample_frac(faithful, 0.25)
volcano2 <- sample_frac(faithful, 0.25)
volcano3 <- sample_frac(faithful, 0.25)
volcano4 <- sample_frac(faithful, 0.25)



exclude <- function(df) {

  df <- get(df)

  df %>% 
    filter(waiting > 90)

}


basic_obj <- ls(pattern = "volcano")

mod_obj <- map(basic_obj, exclude) 

names(mod_obj) <- basic_obj

list2env(mod_obj, envir = environment())
#> <environment: R_GlobalEnv>

Итак, у меня есть два (набора) вопросов:

1) Это самый простой способ применить один и тот же фильтр к нескольким фреймам данных? Я думал о purrr::modify, но ничего не получилось.

2) Может ли это (или альтернативный метод) быть расширено до фреймов данных как внутри функции, так и в глобальной среде (или другой среде)? Как?

Заранее спасибо за любые указатели!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...