On Tue, Jan 27, 2009 at 1:02 PM, Jeff Gentry <jgen...@jimmy.harvard.edu> wrote:
>> I am also getting:
>>  >>> robjects.r('NA')[0]
>> True
>
> So does this imply that R's NA objects always evaluate as Python's True
> right now?  What is (or should be) the equivalent to a NA value in Python?

Heh, I was just researching this last night. It turns out that R's NA
objects don't *always* evaluate as True, because R has many different
"NA" values, one for each type.  If you just say NA bare, then R
apparently guesses and makes that the boolean sort of NA:

In [305]: r("mode(NA)")[0]
Out[305]: 'logical'

So when rpy2 tries to convert it out, it knows that it's a boolean, so
it must be one of True/False, and chooses True. But the other R NA
values get converted differently:

In [307]: r("as.numeric(NA)")[0]
Out[307]: nan

In [308]: r("as.character(NA)")[0]
Out[308]: 'NA'

In [309]: r("as.integer(NA)")[0]
Out[309]: -2147483648

etc. The real and integer values actually round-trip through
conversion to python objects:

In [318]: r.show(Out[307])
[1] NA
Out[318]: <RVector - Python:0x214d8f560 / R:0x2160a39f8>

In [319]: r.show(-2147483648)
[1] NA

So that's convenient when setting up data to pass into rpy2. (But note
that there are many different values of "NaN", and only one of them is
understood as "NA" by R. Passing numpy.NaN there wouldn't have worked.
See http://tolstoy.newcastle.edu.au/R/help/00a/1782.html)

rpy2.rinterface has some variables that look like they're supposed to
be python objects corresponding to NA's --
NA_{REAL,LOGICAL,STRING,INTEGER} -- but in fact they don't ATM. It'd
be convenient if they existed, and conversion respected them in both
directions somehow...

-- Nathaniel

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to