我正在尝试将循环转换为purrr以获得清晰度和(通常)更好的处理速度
我有一个可变数量的Rdata文件,例如“AB.Rdata”,“CD.Rdata”和“YZ.Rdata”
我创建了一个Rdata名称的矢量x.rdata
我想使用purrr::map
加载向量的每个元素
以下是我的意图,但我怀疑这不是好习惯
invisible(purrr::map(x.rdata, load, envir = .GlobalEnv))
我在assign()
中使用map()
遇到同样的问题
当我只想捕获最终对象时,我应该限制使用map()
吗?
感谢
答案 0 :(得分:1)
你可以像其他人一样使用walk但是为此我只使用基函数Vectorize
:
### build data, save it
dir.create("temp")
AB <- 1
CD <- 2
XY <- 3
x.rdata <- c("temp/AB.RData","temp/CD.RData","temp/XY.RData")
save(AB,file=x.rdata[1])
save(CD,file=x.rdata[2])
save(XY,file=x.rdata[3])
### remove, reload
rm(AB,CD,XY)
Vectorize(load,"file")(x.rdata,envir = .GlobalEnv)
c(AB,CD,XY) # [1] 1 2 3
rm(AB,CD,XY)
purrr::walk(x.rdata, load, envir = .GlobalEnv)
c(AB,CD,XY) # [1] 1 2 3
### clean up the mess
unlink("temp",T)
file.exists("temp") # FALSE