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

RPy exception beim Aufruf der R Funktion outer()

Beitragvon regor » Freitag 27. Februar 2009, 11:54

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: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Beitragvon The Spirit » Dienstag 3. März 2009, 13:08

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

Beitragvon regor » Mittwoch 4. März 2009, 10:58

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=]r.persp()[/code] mit "f" was anfangen kann. Folgender Code läuft bei mir jetzt ohne exception:

[code=]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)[/code]

Wer ist online?

Mitglieder in diesem Forum: de_tom