Я хотел загрузить несколько RData в одной команде, как объясняет Johua , используя
> lapply(c(a_data, b_data, c_data, d_data), load, .GlobalEnv)
[[1]]
[1] "nRTC_Data"
[[2]]
[1] "RTA_Data"
[[3]]
[1] "RTC_Data"
[[4]]
[1] "RTA_Data"
> rm(a_data, b_data, c_data, d_data); ls()
[1] "nRTC_Data" "RTA_Data" "RTAC_data" "RTC_Data"
Однако, поскольку мои RData большие, и я не нашел улучшения времени между lappy()
и несколько load()
, я решил использовать многоядерный подход, например:
library(parallel)
mclapply(c(a_data, b_data, c_data, d_data),load,.GlobalEnv, mc.cores = parallel::detectCores())
Хотя это значительно улучшило время загрузки, также возвращает список
[[1]]
[1] "nRTC_Data"
[[2]]
[1] "RTA_Data"
[[3]]
[1] "RTC_Data"
[[4]]
[1] "RTA_Data"
В моем рабочая область, ничего не найдено
> rm(a_data, b_data, c_data, d_data); ls()
character(0)
Я также пробовал заменить .GlobalEnv
на environment()
, но все равно не получилось.
Кто-нибудь знает?
К вашему сведению, вы можете попробовать следующие команды:
> a = "aa";save(a, file = "aa.RData")
> b = "bb";save(b, file = "bb.RData")
> c = "cc";save(c, file = "cc.RData")
> d = "dd";save(d, file = "dd.RData")
> # lapply approach
> rm(list = ls())
> a = "aa.RData"; b = "bb.RData"; c = "cc.RData"; d = "dd.RData"
> lapply(c(a, b, c, d), load, .GlobalEnv); rm(a, b, c, d)
> # mclapply approach
> rm(list = ls())
> a = "aa.RData"; b = "bb.RData"; c = "cc.RData"; d = "dd.RData"
> mclapply(c(a, b, c, d), load, .GlobalEnv, mc.cores = parallel::detectCores()); rm(a, b, c, d)