keine Ahnung wie viele Python user RPy verwenden, aber ich suche hier trotzdem mal um Hilfe für den folgenden einfachen code (unter Python25 und R2.7), der eine exception erzeugt, die ich nicht los werde:
----------------------------------
from rpy import *
x = r.seq(-10, 10, length=60)
y = r.seq(-8, 8, length=60)
a = 1
f = r('function(x,y) { r <- sqrt(a+x^2+y^2); sin(r)/r }')
z = r.outer(x, y, f)
r.persp(x, y, z, theta = -15, phi = 35, expand = 0.5, col="blue", axes=False, box=False)
---------------------------------
Die Exception:
---------------------------------
>pythonw -u "temp.py"
Traceback (most recent call last):
File "temp.py", line 8, in <module>
z = r.outer(x, y, f)
rpy.RPy_RException: Fehler in FUN(X, Y, ...) : objekt "a" nicht gefunden
>Exit code: 1
----------------------------------
warum findet R die Variable a nicht?
RPy exception beim Aufruf der R Funktion outer()
-
- User
- Beiträge: 276
- Registriert: Freitag 8. Juni 2007, 08:50
- Wohnort: 84xxx Bereich
- Kontaktdaten:
hi.
hab mit deinem beispiel auch mal ein wenig rumgespielt, da ich auch viel mit R und rpy arbeite.
den fehler hab ich aber auch. verstehe auch noch nicht ganz warum.
wenn ich mal ein wenig zeit habe, beschäftige ich mich nochmal damit.
meine vermutung bisher ist, das bei der definition der funktion wo ein problem ist mit der übergabe der variable a.
schonmal versucht die funktion f in zwei teilen zu schreiben?
also erstmal der hintere teil und dann die übergabe an die funktion?
is nur mal so ne idee
hab mit deinem beispiel auch mal ein wenig rumgespielt, da ich auch viel mit R und rpy arbeite.
den fehler hab ich aber auch. verstehe auch noch nicht ganz warum.
wenn ich mal ein wenig zeit habe, beschäftige ich mich nochmal damit.
meine vermutung bisher ist, das bei der definition der funktion wo ein problem ist mit der übergabe der variable a.
schonmal versucht die funktion f in zwei teilen zu schreiben?
also erstmal der hintere teil und dann die übergabe an die funktion?
is nur mal so ne idee
Vielen Dank an "The Spirit" . Das hat mich auf die Idee gebracht, die Zuordnung für a in die R-Funktion zu integrieren. Außerdem war es noch notwendig, auf NO_CONVERSION umzustellen, damit die Funktion mit "f" was anfangen kann. Folgender Code läuft bei mir jetzt ohne exception:
Code: Alles auswählen
r.persp()
Code: Alles auswählen
from rpy import *
set_default_mode(NO_CONVERSION)
x = r.seq(-10, 10, length=60)
y = r.seq(-8, 8, length=60)
f = r('function(x,y) { a <- 5; r <- sqrt(a+x^2+y^2); sin(r)/r }')
z = r.outer(x, y, f)
plot_file_name = "temp_rm01.png"
r.png(filename = plot_file_name, height = 400, width = 600)
r.persp(x, y, z, theta = -15, phi = 35, expand = 0.5, col="blue", axes=False, box=False)