具有多个输入参数的 Python RPy2 函数



我希望调用具有多个输入参数的rPy2函数。这是我尝试使用的R函数write.csv。它有多个输入参数,我需要指定多个这样的参数。

如果我在没有可选参数 row.namescolumn.names 的情况下使用它,它的工作原理是这样的:

r("write.csv")(d,file='myfilename.csv')

对于我的要求,我必须使用可选参数 row.namescolumn.names 发出此命令。所以,我尝试了:

r('write.csv')(d, file='myfilename.csv', row.names=FALSE, column.names=FALSE)

但我收到此错误消息:

  File "/home/UserName/test.py", line 12
    r("write.csv")(d,file='myfilename.csv',row.names=FALSE, column.names=FALSE)
SyntaxError: keyword can't be an expression
[Finished in 0.0s with exit code 1]
[shell_cmd: python -u "/home/UserName/test.py"]
[dir: /home/UserName]
[path: /home/UserName/bin:/home/UserName/.local/bin:/usr/local/sbin:/usr/local/bin:
.../usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]

如何在rPy2中实现row.names=FALSEcolumn.names=FALSEwrite.csv

你可以

使用Python的**

请参阅此处的注释:http://rpy2.readthedocs.io/en/version_2.8.x/robjects_functions.html#callable

我的

错误是我应该用_替换.,如此处的文档所示:

from rpy2.robjects.packages import importr
base = importr('base')
base.rank(0, na_last = True)

所以我同样需要row_names = TRUE.但是,write.csv() .仍然存在,因此仅解决了部分问题。好的,所以我尝试了一些方法来得到答案:

生成示例数据:

from rpy2.robjects import r, globalenv
from rpy2.robjects import IntVector, DataFrame
d = {'a': IntVector((1,2,3)), 'b': IntVector((4,5,6))}
dataf = DataFrame(d)

尝试如下 - 1. 不起作用, 2. 和 3. 确实有效:

1:

r('write_csv')(x=dataf,file='testing.csv',row_names=False)
Traceback (most recent call last):
  File "C:UsersUserNameFileDtest.py", line 18, in <module>
    r('write_csv')(x=dataf,file='testing.csv',row_names=False)
  File "C:Python27libsite-packagesrpy2robjects__init__.py", line 321, in __call__
    res = self.eval(p)
  File "C:Python27libsite-packagesrpy2robjectsfunctions.py", line 178, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "C:Python27libsite-packagesrpy2robjectsfunctions.py", line 106, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in eval(expr, envir, enclos) : object 'write_csv'
..not found    
Error in eval(expr, envir, enclos) : object 'write_csv' not found

阿拉伯数字。

r('''
write_csv <- function(x,verbose=FALSE)
write.csv(x,file='testing.csv',row.names=FALSE)
''')
r['write_csv'](dataf)

3.

globalenv['dataf'] = dataf
r("write.csv(dataf,file='testing2.csv',row.names=FALSE)")

我真的希望尝试 1. 会奏效。似乎我已经在文档中重现了该示例base.rank(0, na_last = True),但我认为可能仍然缺少一些东西。

最新更新