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

比较 rpy2 中的方法

比较 rpy2 中的方法

不负相思意 2022-12-20 14:29:02
我有一个 rpy2 脚本:from rpy2.robjects.packages import importrbinom = importr('binom')from rpy2 import robjectsrobjects.r('''library(binom)p = seq(0,1,.01)coverage = binom.coverage(p, 10, method="bayes", type = "central")$coverage''')我想用它来比较方法列表的结果:methods = [("bayes", type = "central"),("asymptotic")]for method in methods:    robjects.globalenv["method"] = robjects.r(method)    robjects.r('''library(binom)    p = seq(0,1,0.01)    coverage = binom.coverage(p, 10, method=method)$coverage    ''')第一行给了我:invalid syntax我想包括贝叶斯方法的“类型”,但是当我删除它以获取列表中的语法时,我仍然收到错误消息:object 'bayes' not found 
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

robjects.r()收到一个字符串,因此对于此特定任务,您只需将单词 method 替换为正确的字符串即可。使用两个引号(单引号和双引号)就可以解决问题,因为.replace()会丢弃外部引号并替换文本,同时保留单引号。


from rpy2.robjects.packages import importr

binom = importr('binom')

from rpy2 import robjects


methods = ["'bayes', type='central'","'asymptotic'"]

for method in methods:

    r_string = """library(binom)

    p = seq(0,1,0.01)

    coverage = binom.coverage(p, 10, method=TECHNIQUE)$coverage

    """.replace('TECHNIQUE',method)

    robjects.r(r_string)


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

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