的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)。至于我可以从文档所知,这是一种通过发送一个整数的最佳途径。
答
我真正想要做的是一个数值(这是在一个矩阵的一个条目)转移到R.这样做的原因是在R来使用从蟒任何整数到一个函数,它要求有一个输入一个整数。不幸的是,这会导致很多错误。要过来它需要把输入作为一个字符串变量。这样做是因为这样
定义的字符串变量,其可具有在python可变单个整数如
p1= int(5) # variable integer in python
A='t=VAR(y, p='+str(p1)+', type=\'const\')'
然后可以简单地调用R中的功能VAR作为
r(A)
这将解开这个谜
有时简单的事情做真的很难弄明白,当你在一个大的代码 – rsc05
@dgg编辑我的问题,更精确地说祝你可以看看它。谢谢 – rsc05