运行几个模型后,我需要system()在我的R脚本上运行一个命令来关闭我的EC2实例,但当我到达那一点时,我得到:
cannot popen 'ls', probable reason 'Cannot allocate memory'
注意:对于这个问题,我甚至尝试了ls哪些不起作用
我的脚本流程如下
使用不同型号重复上述步骤约20次,每个型号平均尺寸为2GB
此时是我需要调用system("sudo shutdown -h now")而没有任何反应,但是当我尝试时,system("sudo shutdown -h now",intern=TRUE)我得到了分配错误.
我rm()在调用关机之前尝试了所有对象,但同样的错误仍然存在.
这是我系统上的一些数据,它是一个大型的EC2 Ubuntu实例
R version 2.15.1 (2012-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods  
[8] base     
other attached packages:
 [1] RTextTools_1.3.9 …我正在使用内部包"MyPKG"编写一个可重复分析的协议.每个用户都将提供自己的输入文件; 除输入外,分析应在相同条件下进行.(例如,我们可以推断出不同的结果是由不同的输入文件引起的).
MyPKG正在开发中,因此library(MyPKG)将加载用户在其本地库中编译的最后一个版本.它还将加载在本地库中找到的任何依赖项.
但我希望每个人都使用特定版本(MyPKG_3.14)进行此分析,同时仍允许开发更新版本.如果我理解正确,"R --vanilla"将为每个人加载相同的依赖项.
完成后,我们将工作环境保存为VM,以维持稳定的可重现环境.因此,临时(6个月)的解决方案就足够了.
我提出了两个可能的解决方案,但我不确定是否足够.
要求服务器管理员将MyPKG_3.14安装到默认的R路径中,然后在协议中提供以下代码:
R --vanilla
library(MyPKG)
....
要么
在特定的库中编译MyPKG_3.14,例如lib.loc ="/ home/share/lib/R/MyPKG_3.14",然后提供
R --vanilla
library(MyPKG)
SessionInfo()吗?