Meine Frage ist einfach, ich versuche, einen Datenpunkt eine ganze Zahl von Python nach R zu transportieren. Der Grund dafür ist, weil ich R-Funktionen in R verwenden möchte, die Ausgabe dann für die Plot-Transformation in Python zurücktransformieren.Python: Wie man mit numpy2ri nur eine Variable (Zahl/Integer) zu R bringt?
Ich habe dies mit Arrays getan, es funktioniert gut, aber nicht mit einem Punkt-Array. Betrachten Sie das einfache Beispiel.
Das folgende Beispiel funktionieren
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)))
Kein Problem! Allerdings, wenn r_p1= numpy2ri(np.array((1)))
statt r_p1= numpy2ri(np.array((1,1)))
ich die folgende Fehlermeldung
---------------------------------------------------------------------------
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
bearbeiten
Nur meine Frage besser zu fragen, wie ich verstanden von dort keine Möglichkeit gibt, eine eine ganze Zahl verwenden, anstatt ein Array in R.
Aber was ich wirklich brauche, ist eine Funktion in R aufrufen, die Eingabe in einer von ihnen ist eine einzelne Ziffer wie 3, oder vielleicht 21, Elemente, die in Python bestimmt sind.
Insbesondere rufe ich eine solche Bibliothek in R r('library("vars")')
Wobei ich es benutzen wollen y einige Matrix nennen 2 von 100
# Run a normal VAR model
r("t=VAR(y, p=p1, type='const')")
, wie Sie diesen p1 sehen kann, ist eine einzelne Zahl sagen wir 3
als r.assign("p1", r_p1)
d
# Then find the summary statistics
r('s=summary(t)')
(die in Python ausgewählt ist)
das gibt mir diesen Fehler
RRuntimeError: Error in crossprod(resids)/obs : non-conformable arrays
manchmal machen es einfache Dinge wirklich schwer es herauszufinden, wenn Sie in einem großen Code sind – rsc05
@ dgg Ich bearbeite meine Frage, um genauer zu sein, ich wünsche Sie können es sich ansehen. Vielen Dank – rsc05