我有这个示例数据和一些示例函数
other_data<-c(1,2,3) # data I have to have
fun<-function(a,b,c){
data<-c(a,b,c)
return(data)
} # first function
var_1<-runif(20,10,20) # variables
var_2<-runif(20,10,20)
var_3<-runif(20,10,20)
vars<-data.frame(var_1,var_2,var_3) # data frame of variables
subfun<-function(x){
res<-fun(vars[x,1],vars[x,2],vars[x,3])
return(res)
} # sub function of the first one to use more options and get them into list
final<-lapply(c(1:nrow(vars)),subfun) # this should be the final result I want to get
问题是,我的真实数据要大得多,我有大约500个数据&#34; (比如在第一个函数中)由于a,b,c
的值不同,每次都必须重新加载。而且由于记忆,即环境,它似乎会减慢功能。
我不想像rm(data)
这样做,并在行return(data)
之前的第一个函数中重复500次。
所以我的问题
是否有任何直接的方法可以删除函数期间加载的所有对象,但只有fun(a,b,c)
中的这些对象?因为我需要删除other_data
。
或者更简单,是否有直接的方法来删除rm(ls(),instead of=c("other_data")
等所有对象?
答案 0 :(得分:0)
如果您只想保留某些对象,可以使用函数keep from library gdata。 http://www.inside-r.org/packages/cran/gdata/docs/keep
library('gdata')
var1 <- 1
var2 <- 2
ls()
[1] "var1" "var2"
keep(var1, sure = T)
ls()
[1] "var1"
确保设置为True会执行删除操作。否则,keep将返回已删除的对象的名称。