我有一个 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)
添加回答
举报
0/150
提交
取消