我写了一个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只加载指定环境的对象