r语言 - 带有 for 循环'load.Rdata'函数



我写了一个for循环函数,for循环使用的是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

函数负载。Rdata在加载时将加载的对象保存在全局环境中。Rdata2只加载指定环境的对象