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

Python RPy2 function with multiple input arguments

我希望调用具有多个输入参数的 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=FALSE 实现 write.csv

我的一个错误是我应该用 _ 替换 .,如文档 here:

所示
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:\Users\UserName\FileD\test.py", line 18, in <module>
    r('write_csv')(x=dataf,file='testing.csv',row_names=False)
  File "C:\Python27\lib\site-packages\rpy2\robjects\__init__.py", line 321, in __call__
    res = self.eval(p)
  File "C:\Python27\lib\site-packages\rpy2\robjects\functions.py", line 178, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "C:\Python27\lib\site-packages\rpy2\robjects\functions.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

2.

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),但我认为可能仍然缺少某些内容。

您可以使用 Python 的 **

查看此处注释:http://rpy2.readthedocs.io/en/version_2.8.x/robjects_functions.html#callable