清洁环境以加快 R 中的功能



>我有这个示例数据和一些示例函数

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 个"数据"(如在第一个函数中),由于a,b,c值不同,每次都必须重新加载。而且它似乎因为内存(即环境)而减慢了功能的速度。我不想像rm(data)那样在行return(data)之前在第一个函数中重复 500 次。所以我的问题

有没有直接的方法可以删除在函数期间加载的所有对象,但只删除fun(a,b,c)中的这些对象?因为我需要不要删除other_data.

或者更简单地说,有没有简单的方法 如何删除所有对象,如 rm(ls(),instead of=c("other_data")

如果你只想保留某些对象,你可以使用函数 keep from 库 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 将执行删除操作。否则,保留将返回将被删除的对象的名称。

最新更新