我在Windows中使用RStudio来开发和运行涉及大数据集(90乘~60000矩阵)的多变量分析的管道。对于这样大小的矩阵,我经常得到“防止堆栈溢出”。避免这个问题的一种方法,虽然仍然使用RStudio与常规Rgui相反,但是使用以下语法运行我的脚本
system("Rscript --max-ppsize=500000, my_script.s").
但是,运行此命令会导致脚本成功运行,但我无法获得所需的输出。如果我使用以下选项运行上一个命令
opt-< system("Rscript --max-ppsize=500000, my_script.s", internal = TRUE)
我将终端的标准输出作为输出(作为字符向量),但不是所需的输出。
考虑一下这个玩具示例:
将以下代码保存在my_script.R
中print("first call")
rnorm(15)
print("second call")
rnorm(20)
并从控制台运行以下代码
a <- system("Rscript my_script.R", intern = TRUE)
a
如您所见,输出是一个长度为9的字符向量,标准输出到控制台。
如果你修改my_script.R如下
print("first call")
i_want_this <- rnorm(20)
然后再次运行
a <- system("Rscript my_script.R", intern = TRUE)
a
现在唯一存储在 a 中的是打印命令的输出。
我的问题是:有没有办法收集 i_want_this 变量作为r对象(在这种情况下是长度为20的数字向量)?
有一个类似的问题被问到here,没有令人满意的答案。