r - for循环中带有'load.Rdata'的函数
问题描述
我用 for-loop 编写了一个函数,for-loop 正在使用load.Rdata
. 这是我的示例函数。
tmp_fun = function(list_dtaname){
for (ii in 1:length(list_dtaname)) {
filename0 = paste(list_dtaname[ii],'.RData',sep = '')
miceadds::load.Rdata(filename0, "dta00")
rm(dta00)
}
}
当我使用这个功能
tmp_fun(samplelist)
我得到这个结果
tmp_fun(list_pot_dtaname$out)
Warning messages:
1: In rm(dta00) : object 'dta00' not found
2: In rm(dta00) : object 'dta00' not found
3: In rm(dta00) : object 'dta00' not found
4: In rm(dta00) : object 'dta00' not found
5: In rm(dta00) : object 'dta00' not found
6: In rm(dta00) : object 'dta00' not found
7: In rm(dta00) : object 'dta00' not found
为什么该功能不起作用?
解决方案
我们可以将其更改为load.Rdata2
有一个选项来指定path
(而不是要创建的 'objname')的位置,并且可以在<-
我们的临时对象的 lhs 上完成分配rm
tmp_fun <- function(list_dtaname){
for (ii in 1:length(list_dtaname)) {
filename0 = paste(list_dtaname[ii],'.RData',sep = '')
dta00 <- miceadds::load.Rdata2(filename=
paste(list_dtaname[ii],'.RData',sep = ''))
rm(dta00)
}
}
问题在于load.Rdata
对象的保存位置。根据?load.Rdata
函数 load.Rdata 将加载的对象保存在全局环境中,而 load.Rdata2 仅加载指定环境中的对象