要解决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 importrrbase=importr('base')from rpy2.robjects.functions import SignatureTranslatedFunctionrbase.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"))但是它们没有效果。任何建议将不胜感激。
2 回答
烙印99
TA贡献1829条经验 获得超13个赞
当您打算实现以下目标时,可能不会执行以下操作:
rbase.options = SignatureTranslatedFunction(
rbase.options,
init_prm_translate={
'java_parameters': rbase.c("-XX:+UseConcMarkSweepGC", "-Xmx8192m")
}
)
命名参数init_prm_translate可用于可选地重命名参数名称,这样做的主要原因是在 R 中,类似foo.bar的名称在语法上是有效的,但它们不是 Python。有一个默认的简单名称翻译规则可以替换.with_但 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]
添加回答
举报
0/150
提交
取消