? stato filtrato un testo allegato il cui set di caratteri non era indicato... Nome: non disponibile URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100121/95fb8869/attachment.pl>
use R from python
3 messages · Massimo Di Stefano, Barry Rowlingson
On Thu, Jan 21, 2010 at 8:35 PM, Massimo Di Stefano
<massimodisasha at yahoo.it> wrote:
Hi All, please aplogize me if my qustion is a bit OT here, but maybe is there someone that uses R from inside python using rpy or rpy2 interface.
In [54]: x = rdiv( ( rdiff( x, rmin(x) ) ) , ( rdiff( rmax(x) , rmin(x) ) ) )
In [55]: y = rdiv( ( rdiff( r_sorted, rmin(r_sorted) ) ) , ( rdiff( rmax(r_sorted) , rmin(r_sorted) ) ) )
Errore in .Primitive("-")("mymap at data$elevation.dem", "mymap at data$elevation.dem") :
?argomento non numerico trasformato in operatore binario
------------------------------------------------------------
Traceback (most recent call last):
?File "<ipython console>", line 1, in <module>
?File "build/bdist.macosx-10.6-universal/egg/rpy2/robjects/__init__.py", line 423, in __call__
RRuntimeError: Errore in .Primitive("-")("mymap at data$elevation.dem", "mymap at data$elevation.dem") :
?argomento non numerico trasformato in operatore binario
My non-existent Italian is telling me this is non-numeric argument in binary operator. Something like:
"hello" - "goodbye"
Error in "hello" - "goodbye" : non-numeric argument to binary operator
- because you are subtracting the strings "mymap at data$elevation.dem".
Tracking back, those strings come from:
r_sorted = rsort('mymap at data$elevation.dem', decreasing=True)
- which is sorting the string vector! Like this:
sort('mymap at data$elevation.dem', decreasing=TRUE)
[1] "mymap at data$elevation.dem"
You want to sort the *value* of that object. You want to sort the
$elevation.dem column of the @data slot of the python R object mymap.
In a functional form which will translate to your style of rpy2 would
be this in R:
get("$")(slot(mymap,"data"),"elevation.dem")
You may need to get 'get' and 'slot' from r.robjects in the way you
do other functions. This looks a bit weird to me, but I'm used to
rpy-1 - maybe rpy 2 is like this!
Hope that points you in the right direction.
Barry
Hi Barry,
thanks for your preciouse help!
Please apologize my newbie questions.
i'm able to go ahead tring to port the R code to run under python,
now i'm blocked on the "plot" function.
maybe i'm doing the same error but i haven't yet find a way to debug
my code line.
this what i tried :
# import library (rpy2 + spgrass6)
import rpy2.rinterface as rinterface
import rpy2.robjects as robjects
robjects.r.require('spgrass6', quietly = True)[0]
# def some functions :
rsort = robjects.r['sort']
rseq = robjects.r['seq']
rlength = robjects.r['length']
rdiv = robjects.r['/']
rmin = robjects.r['min']
rmax = robjects.r['max']
rdiff = robjects.r['-']
rget = robjects.r['get']
rslot = robjects.r['slot']
rpng = robjects.r['png']
rplot = robjects.r['plot']
df = robjects.r['data.frame']
# input data and output image
inputmap = 'elevation.dem'
output_image = '/Users/sasha/Desktop/file.png'
# code
mymap = robjects.r.readRAST6(inputmap)
elev = rget("$")(rslot(mymap,"data"),"elevation.dem")
r_sorted = rsort(elev, decreasing=True)
p_seq = rseq(1,rlength(r_sorted))
x = rdiv(p_seq,rlength(r_sorted))
x = rdiv( ( rdiff( x, rmin(x) ) ) , ( rdiff( rmax(x) , rmin(x) ) ) )
y = rdiv( ( rdiff( r_sorted, rmin(r_sorted) ) ) , ( rdiff( rmax(r_sorted) , rmin(r_sorted) ) ) )
rpng(output_image)
result = df(x,y)
rplot(result,type = 'l',x)
------------------------------------------------------------
File "<ipython console>", line 1
SyntaxError: non-keyword arg after keyword arg (<ipython console>, line 1)
my "rplot" actions seems to be wrong :-(
while if i try :
args = [x, y]
kwargs = {'ylab':"foo/bar", 'type':"b", 'col':"blue", 'log':"x"}
robjects.r.plot(*args, **kwargs)
i have a png file, but to "see the file" on my desktop
i had to type "twice" the command :
robjects.r.plot(*args, **kwargs)
thanks!!!
Massimo.
Il giorno 22/gen/2010, alle ore 00.38, Barry Rowlingson ha scritto:
On Thu, Jan 21, 2010 at 8:35 PM, Massimo Di Stefano
Hi All, please aplogize me if my qustion is a bit OT here, but maybe is there someone that uses R from inside python using rpy or rpy2 interface.
In [54]: x = rdiv( ( rdiff( x, rmin(x) ) ) , ( rdiff( rmax(x) , rmin(x) ) ) )
In [55]: y = rdiv( ( rdiff( r_sorted, rmin(r_sorted) ) ) , ( rdiff( rmax(r_sorted) , rmin(r_sorted) ) ) )
Errore in .Primitive("-")("mymap at data$elevation.dem", "mymap at data$elevation.dem") :
argomento non numerico trasformato in operatore binario
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "build/bdist.macosx-10.6-universal/egg/rpy2/robjects/__init__.py", line 423, in __call__
RRuntimeError: Errore in .Primitive("-")("mymap at data$elevation.dem", "mymap at data$elevation.dem") :
argomento non numerico trasformato in operatore binario
My non-existent Italian is telling me this is non-numeric argument in binary operator. Something like:
"hello" - "goodbye"
Error in "hello" - "goodbye" : non-numeric argument to binary operator
- because you are subtracting the strings "mymap at data$elevation.dem".
Tracking back, those strings come from:
r_sorted = rsort('mymap at data$elevation.dem', decreasing=True)
- which is sorting the string vector! Like this:
sort('mymap at data$elevation.dem', decreasing=TRUE)
[1] "mymap at data$elevation.dem"
You want to sort the *value* of that object. You want to sort the
$elevation.dem column of the @data slot of the python R object mymap.
In a functional form which will translate to your style of rpy2 would
be this in R:
get("$")(slot(mymap,"data"),"elevation.dem")
You may need to get 'get' and 'slot' from r.robjects in the way you
do other functions. This looks a bit weird to me, but I'm used to
[[elided Yahoo spam]]
Hope that points you in the right direction. Barry -- blog: http://geospaced.blogspot.com/ web: http://www.maths.lancs.ac.uk/~rowlings web: http://www.rowlingson.com/ twitter: http://twitter.com/geospacedman pics: http://www.flickr.com/photos/spacedman