为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Rpy2 更改全局选项

如何使用 Rpy2 更改全局选项

猛跑小猪 2023-01-04 11:24:37
要解决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] 


查看完整回答
反对 回复 2023-01-04
?
慕森王

TA贡献1777条经验 获得超3个赞

@lgautier,通过添加setenv _JAVA_OPTIONS "-Xmx2g"到 ~/.cshrc 解决了我的问题。



查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信