我有一个rpy2脚本。
from rpy2.robjects.packages import importr
binom = importr('binom')
from rpy2 import robjects
robjects.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
robjects.r()
接收一个字符串,所以对于这个特殊的任务,你可以只用正确的字符串替换单词方法。使用两个引号(单引号和双引号)就可以了,因为 .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)