我有在MySQL数据集上执行GLM的基本R脚本。在bash中使用Rscript可以很好地运行。但是我想在python脚本中调用它,这样我可以将其添加到循环中,可以创建sql语句,但似乎无法使用rpy2将其传递给R。
for word in words:
sql_scores = "select a.article_id, response, score from scores as a join profile as b on a.article_id = b.article_id where response in (1,0) and keyword = '%s';" % (word[0])
robjects.r("library(RMySQL)")
robjects.r("mydb = dbConnect(MySQL(), user='me', password='xxxx', host='aws.host', dbname='mydb')")
robjects.r("results = fetch(dbSendQuery(mydb, '%s'))") % (sql_scores)
robjects.r("model <- glm(response ~ score , data=results, family=binomial)")
robjects.r("summary(model)")
如果我打印sql_scores,则可以直接在MySQL中运行此命令。但是,Python会产生此错误。
Loading required package: DBI
Traceback (most recent call last):
File "keyword_searcher.py", line 30, in <module>
robjects.r("results = fetch(dbSendQuery(mydb, '%s'))") % (sql_scores)
File "/usr/local/lib/python2.7/dist-packages/rpy2/robjects/__init__.py", line 268, in __call__
p = rinterface.parse(string)
ValueError: Error while parsing the string.
我不知道正确的语法用于:
robjects.r("results = fetch(dbSendQuery(mydb, %s))") % (sql_scores)
"%s"
在robjects.r字符串的双引号和单引号的双引号:
robjects.r('results = fetch(dbSendQuery(mydb, "%s"))') % (sql_scores)
或使用format()
方法:
robjects.r('fetch(dbSendQuery(mydb, {0}))'.format(sql_scores))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句