我遇到一个奇怪的问题,data.table如果函数在另一个函数中使用,函数不能识别明确定义的参数.
这是一个简单的例子:我在第一个函数时遇到错误testFun1,
Error in fun(value) : could not find function "fun"
但是,很明显有默认值fun.使用没有问题reshape2::dcast,请参阅testFun2.
testFun1 <- function(data, formula, fun = sum, value.var = "value") {
data.table::dcast(data = data, formula = formula, fun.aggregate = fun,
value.var = "value")
}
testFun2 <- function(data, formula, fun = sum, value.var = "value") {
reshape2::dcast(data = data, formula = formula, fun.aggregate = fun,
value.var = "value")
}
d <- data.table(x = c("a", "b"), y = c("c", "d"), …Run Code Online (Sandbox Code Playgroud) 我正在从事一个通过循环重复使用临时哈希表的工作.哈希表是由R.环境变量表示的问题是,作为循环进行存储成本不断无论上涨我用来删除表什么方法(我试过rm()和gc()不过也不是能够释放内存.)作为结果我不能完成一个非常长的循环,比如10M循环.它看起来像是内存泄漏问题,但我在其他地方找不到解决方案.我想问一下,完全删除环境变量并同时释放之前占用的所有内存的正确方法是什么.在此先感谢您帮我检查问题.
这是一个非常简单的例子.我使用的是Windows 8和R 3.1.0版.
> fun = function(){
H = new.env()
for(i in rnorm(100000)){
H[[as.character(i)]] = rnorm(100)
}
rm(list=names(H), envir=H, inherits=FALSE)
rm(H)
gc()
}
>
> for(k in 1:5){
print(k)
fun()
gc()
print(memory.size(F))
}
[1] 1
[1] 40.43
[1] 2
[1] 65.34
[1] 3
[1] 82.56
[1] 4
[1] 100.22
[1] 5
[1] 120.36
Run Code Online (Sandbox Code Playgroud)