RPy exception beim Aufruf der R Funktion outer()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
regor
User
Beiträge: 2
Registriert: Freitag 27. Februar 2009, 11:29

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?
The Spirit
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
regor
User
Beiträge: 2
Registriert: Freitag 27. Februar 2009, 11:29

Vielen Dank an "The Spirit" :D . 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

Code: Alles auswählen

r.persp()
mit "f" was anfangen kann. Folgender Code läuft bei mir jetzt ohne exception:

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)
Antworten