小编use*_*417的帖子

为什么gc()不能释放内存?

我在具有64 GB RAMWindows 64位计算机上运行模拟.内存使用率达到55%,在完成模拟运行后,我删除了工作空间中的所有对象,然后是a .rm(list=ls())double gc()

我认为这会为下一次模拟运行释放足够的内存,但实际内存使用率仅下降1%.咨询了很多不同的论坛我找不到令人满意的解释,只有模糊的评论如:

"根据您的操作系统,释放的内存可能不会返回到操作系统,而是保留在进程空间中."

我想找到以下信息:

  • 1)哪个操作系统和哪些条件释放内存不会返回给操作系统,以及
  • 2)如果有任何其他补救措施而不是关闭R并再次启动它以进行下一次模拟运行?

garbage-collection r

57
推荐指数
2
解决办法
2万
查看次数

R:foreach循环如何找到应该调用的函数?

当我使用%dopar%调用自定义函数的foreach循环(使用)时,我遇到了问题.使用Linux时没有真正的问题,但是当我使用Windows时,无法找到自定义的功能.很难用文字解释这个问题,所以我写了一个小例子来展示它.假设我有三个简单函数的集合,其中FUN2(using %do%)和FUN3(using %dopar%)调用第一个函数(FUN):

FUN <- function(x,y,z) { x + y + z }
FUN2 <- function(a, b) {
  foreach(i=1:3) %do% FUN(i, a, b)
}
FUN3 <- function(a, b) {
  foreach(i=1:3) %dopar% FUN(i, a, b)
}
Run Code Online (Sandbox Code Playgroud)

这些函数存储在一个名为的脚本中foreach_testfunctions.R.在另一个脚本(foreach.test)中我发布了这些函数,使用library(doParallel)并尝试使用这些函数.首先我用Linux做,一切正常:

source("foreach_testfunctions.R")
a <- 2
b <- 3
library(doParallel)
registerDoParallel()

foreach(i=1:3) %do% FUN(i, a, b)    ## works fine
FUN2(a, b)                          ## works fine
foreach(i=1:3) %dopar% FUN(i, a, b) ## …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r mpi

18
推荐指数
1
解决办法
8902
查看次数

R:如何使用randomForest的长向量?

R 3.0.0的一个新特性是引入了长向量.但是,.C()和.Fortran()不接受长矢量输入.在R-bloggers上我发现:

这是一种预防措施,因为现有代码不太可能被编写来处理长向量(并且R包装器通常假设长度(x)是整数)

我使用R-package randomForest,这个包显然需要.Fortran(),因为它崩溃了,留下了错误信息

randomForest.default出错:.Fortran不支持long向量(参数20)

如何克服这个问题?我在Windows 7 64位计算机上使用randomForest 4.6-7(在R 3.0.2下构建).

r vector random-forest

13
推荐指数
1
解决办法
2460
查看次数

R:简单乘法导致整数溢出

在较长的脚本中,我必须将向量A(2614)的长度乘以数据帧B(1456000)的行数.如果我直接这样做,length(A) * nrow(B)我会得到消息,NAs produced by integer overflow虽然当我乘以相同的数字时没有问题:

2614 * 1456000 
[1] 3805984000 
Run Code Online (Sandbox Code Playgroud)

使乘法运算的唯一方法是round(length(A)) * nrow(B)length(A) * round(nrow(B)).但这些数字所生产lengthnrow必须为整数无论如何!此外,我使用函数is.integer的帮助页面上建议的以下函数对此进行了测试...

is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x-round(x)) < tol
Run Code Online (Sandbox Code Playgroud)

......当然,他们是整数.那么为什么我需要拐杖"圆"呢?非常令人费解......有人知道背景中发生了什么?

r integer-overflow

8
推荐指数
1
解决办法
6849
查看次数

R:如何提升回归树处理丢失的数据?

默认情况下,提升回归树(包gbm)的R实现如何处理预测变量的缺失值?根据哪种算法,它们是否被估算,如果是,

我的问题背景:差不多一年前我做了分析,并使用了Elith等人提供的脚本.2008年(促进回归树的工作指南,Journal of Animal Ecology 77,802-813)来调用gbm.我现在意识到我有一些预测变量的NA,我想知道增强的回归树如何处理它们.浏览通过各种手册和文件,我发现之类的语句"提振回归树可容纳缺失值"之类的,但我找不到什么GBM与缺失值做一个精确的描述.分析本身没有问题,因此gbm必须以一种或另一种方式处理它们.在gbm手册中,甚至有一个例子,其中引入了故意的NA来证明gbm可以毫无问题地继续工作.现在我'

tree regression r

7
推荐指数
1
解决办法
4168
查看次数

R:安装包时unloadNamespace(包)的问题

我制作了一个名为TRIMmaps的R包,并试图用命令安装它

R CMD INSTALL TRIMmaps_v1.12.0
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Error in unloadNamespace(package) : 
  namespace ‘Rcpp’ is imported by ‘plyr’ so cannot be unloaded
Error in library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) : 
  “Rcpp” version 0.11.2 cannot be unloaded.
Run Code Online (Sandbox Code Playgroud)

我确实需要包plyr,因为当我删除它时,我收到消息:

Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
  there is no package called ‘plyr’
Run Code Online (Sandbox Code Playgroud)

我删除了两个包plyr,Rcpp然后再次安装它们.我现在的当前版本Rcpp是0.11.5,但是当我再次尝试安装TRIMmaps包时,我得到的错误信息与上面相同,包括该行“Rcpp” version 0.11.2 cannot be unloaded.虽然我删除了较旧的Rcpp版本并将其替换为0.11.5,但这仍然存在0.11.2的问题.

我该如何解决这个问题?任何提示都表示赞赏.

installation namespaces r package

7
推荐指数
1
解决办法
5484
查看次数

R中的randomForest:是否有可能计算逐案置信区间?

R package randomForest报告森林中每棵树的平均误差.但是,我需要对数据中的每个案例充满信心.由于randomForest通过对单个树的预测求平均来计算案例预测,我想也应该可以计算一个案例标准误差,从而计算置信区间.这可以使用输出randomForest对象完成(如果是这样的话:怎么做?)或者我是否需要深入研究源代码?

r confidence-interval random-forest

4
推荐指数
1
解决办法
3093
查看次数