的Python:如何使用numpy2ri采取只有一个变量(数字/整数)至R

问题描述:

我的问题很简单,我想传输一个数据点从蟒蛇河整数这样做的原因是因为我想用R里面的函数在R,创造的产值,然后回变换到Python的绘图。的Python:如何使用numpy2ri采取只有一个变量(数字/整数)至R

我这样做与数组它工作得很好,但不是一个点阵列。考虑一个简单的例子。

这下面的例子做工精细

import rpy2.robjects as robjects, pandas as pd, numpy as np 
    from rpy2.robjects import r 
    from rpy2.robjects.numpy2ri import numpy2ri 
    from rpy2.robjects.packages import importr 

    r_p1= numpy2ri(np.array((1,1))) 

没问题!但是如果r_p1= numpy2ri(np.array((1)))代替r_p1= numpy2ri(np.array((1,1)))

我收到以下错误

--------------------------------------------------------------------------- 
RRuntimeError        Traceback (most recent call last) 
<ipython-input-5-d404ef525bdb> in <module>() 
     4 from rpy2.robjects.packages import importr 
     5 
----> 6 r_p1= numpy2ri(np.array((1))) 
     7 
     8 # df= pd.DataFrame(np.random.random((108, 2)), columns=['Number1','Number2']) 

D:\Anaconda3\lib\site-packages\rpy2\robjects\numpy2ri.py in numpy2ri(o) 
    80   #FIXME: no dimnames ? 
    81   #FIXME: optimize what is below needed/possible ? (other ways to create R arrays ?) 
---> 82   res = rinterface.baseenv['array'](vec, dim=dim) 
    83  # R does not support unsigned types: 
    84  elif o.dtype.kind == "u": 

RRuntimeError: Error in (function (data = NA, dim = length(data), dimnames = NULL) : 
    'dims' cannot be of length 0 

编辑

只是问我的问题好,我的理解,从没有办法一个可以使用一个整数,而不是一个阵列中的R.

但是我真正需要的是调用中的R,取入输入其中的一个是单个数字,例如3-,或也许21,被在python确定元件的功能。

特别是我中的R r('library("vars")')

调用这样的库一息尚存,我想用一些矩阵称之为Y 2 100

# Run a normal VAR model 
r("t=VAR(y, p=p1, type='const')") 

,你可能会看到这个P1是单数说3(其在python选择)

作为r.assign("p1", r_p1) d

# Then find the summary statistics 
r('s=summary(t)') 

这给了我这个错误

RRuntimeError: Error in crossprod(resids)/obs : non-conformable arrays 

np.array((1, 1)) # tuple of length 2 
np.array((1))  # literally the integer 1 
np.array((1,)) # tuple with a single element 

调用它的第三个例子np.array((1,))工作对我来说

这是一种奇怪的,因为有与R纯数字没有这样的事;一切都是矢量(有时长度为1)。至于我可以从文档所知,这是一种通过发送一个整数的最佳途径。

+0

有时简单的事情做真的很难弄明白,当你在一个大的代码 – rsc05

+0

@dgg编辑我的问题,更精确地说祝你可以看看它。谢谢 – rsc05

我真正想要做的是一个数值(这是在一个矩阵的一个条目)转移到R.这样做的原因是在R来使用从蟒任何整数到一个函数,它要求有一个输入一个整数。不幸的是,这会导致很多错误。要过来它需要把输入作为一个字符串变量。这样做是因为这样

定义的字符串变量,其可具有在python可变单个整数如

p1= int(5) # variable integer in python 
A='t=VAR(y, p='+str(p1)+', type=\'const\')' 

然后可以简单地调用R中的功能VAR作为

r(A) 

这将解开这个谜