如何使用 Rpy2 更改全局选项
How to change global options with Rpy2
要解决 R 中的问题 "java.lang.OutOfMemoryError: Java heap space",您需要按如下方式更改全局选项:
options(java.parameters = c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
如果我在 python 中使用 rpy2 会怎么样?
我尝试了以下每个命令
from rpy2.robjects import *
from rpy2.robjects.packages import importr
rbase=importr('base')
from rpy2.robjects.functions import SignatureTranslatedFunction
rbase.options = SignatureTranslatedFunction(rbase.options,
init_prm_translate={'java_parameters': rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")})
rbase.options(java_parameters = StrVector(rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")))
rbase.options(java_parameters = rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
但是它们没有效果。
如有任何建议,我们将不胜感激。
当您打算实现时,可能不会执行以下操作:
rbase.options = SignatureTranslatedFunction(
rbase.options,
init_prm_translate={
'java_parameters': rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")
}
)
命名参数init_prm_translate
可用于选择性重命名
参数名称,主要原因是在 R 中,像 foo.bar
这样的名称在语法上是有效的,但它们不是 Python。有一个默认的简单名称翻译规则,用 _
替换 .
但 R 可以具有带有 foo.bar
和 foo_bar
参数的函数,在这种情况下,手动命名规则可能是方便。
例如:
import rpy2.robjects as ro
f = ro.r('function(x=1, y=2) {x}')
f(x=3) # returns [3]
# translate the named parameter 'x' to 'foo'
f_t = ro.functions.SignatureTranslatedFunction(
f, init_prm_translate={'foo': 'x'}
)
f_t(foo=3) # returns [3]
@lgautier,通过将 setenv _JAVA_OPTIONS "-Xmx2g"
添加到 ~/.cshrc.
解决了我的问题
要解决 R 中的问题 "java.lang.OutOfMemoryError: Java heap space",您需要按如下方式更改全局选项:
options(java.parameters = c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
如果我在 python 中使用 rpy2 会怎么样? 我尝试了以下每个命令
from rpy2.robjects import *
from rpy2.robjects.packages import importr
rbase=importr('base')
from rpy2.robjects.functions import SignatureTranslatedFunction
rbase.options = SignatureTranslatedFunction(rbase.options,
init_prm_translate={'java_parameters': rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")})
rbase.options(java_parameters = StrVector(rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")))
rbase.options(java_parameters = rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
但是它们没有效果。
如有任何建议,我们将不胜感激。
当您打算实现时,可能不会执行以下操作:
rbase.options = SignatureTranslatedFunction(
rbase.options,
init_prm_translate={
'java_parameters': rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")
}
)
命名参数init_prm_translate
可用于选择性重命名
参数名称,主要原因是在 R 中,像 foo.bar
这样的名称在语法上是有效的,但它们不是 Python。有一个默认的简单名称翻译规则,用 _
替换 .
但 R 可以具有带有 foo.bar
和 foo_bar
参数的函数,在这种情况下,手动命名规则可能是方便。
例如:
import rpy2.robjects as ro
f = ro.r('function(x=1, y=2) {x}')
f(x=3) # returns [3]
# translate the named parameter 'x' to 'foo'
f_t = ro.functions.SignatureTranslatedFunction(
f, init_prm_translate={'foo': 'x'}
)
f_t(foo=3) # returns [3]
@lgautier,通过将 setenv _JAVA_OPTIONS "-Xmx2g"
添加到 ~/.cshrc.