У меня есть несколько больших 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) Может ли это (или альтернативный метод) быть расширено до фреймов данных как внутри функции, так и в глобальной среде (или другой среде)? Как?
Заранее спасибо за любые указатели!