rpy2可以用两种不同的方法计算R代码:
方法A-将字符串计算为R代码
import rpy2.robjects as rob
rcode = '''
print(summary(mtcars))
'''
rob.r(rcode)
方法B-通过python对象计算R代码
import rpy2.robjects as rob
rsummary = rob.r['summary']
mtcars = rob.r('mtcars')
print rsummary(mtcars)
rpy2 documentation警告不要使用方法A,因为“对大型对象执行此操作可能不是对计算能力的最佳利用。“为什么?是否有已知的基准?你知道吗
我更喜欢方法A,因为它对我来说更容易理解,它使两种语言保持分离,而且我可以只填充现有的R代码片段。然而,我想知道更多关于我将要牺牲什么,走这条路。对此有任何见解都将不胜感激。你知道吗
如果您在python中没有任何数据,这一切都归结为处理数据,请务必使用方法A
方法A相当于使用子进程运行R。想象一下,使用python创建一个文件script.R,然后运行该脚本,在开始处理大量数据之前,这一切都可以正常工作。你知道吗
举个例子:
现在在python中有了一个包含1000个元素的向量,如果你想在R中使用它,你必须转换它。您的方法A将产生如下结果:
其中
len(cmd)>15000
。最好将所有内容都写入一个文件,然后单独调用R脚本(如上所述,使用python的subprocessing
模块)。或者,您可以这样做,如方法B:如果向量的长度是100万而不是1000,那么它就不会有问题。你知道吗
关于效率问题:
对于一个简单的玩具示例,它没有做很多工作,而且数据集相对较小,不转换为字符串的速度似乎要快5-6倍。你知道吗
相关问题 更多 >
编程相关推荐