[Rd] Small issue with R's C API
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue Oct 25 17:26:13 CEST 2005
An R NULL does not map to a C NULL.
Please learn to distinguish documented facts from uninformed guesswork.
On Tue, 25 Oct 2005, Dominick Samperi wrote:
> Prof Brian Ripley wrote:
>> This is nothing to do with the C API: isVector and isMatrix are not
>> part of the API (see Writing R Extensions for what it is). That's the
>> `issue' here.
>>
>> On Tue, 25 Oct 2005, Dominick Samperi wrote:
>>
>>> Consider the R code:
>>> mat <- matrix(seq(1,20),4,5)
>>> is.matrix(mat) # gives TRUE
>>> is.vector(mat) # gives FALSE
>>>
>>> On the other hand, if mat is passed through the .Call interface the
>>> corresponding SEXP (call it smat) satisfies
>>> isMatrix(smat) // TRUE
>>> isVector(smat) // TRUE
>>>
>>> Consequently, you cannot distinguish matrices from vectors. Looking
>>> at the dim attribute of a vector doesn't help because this is garbage.
>>
>> You can look to see if it has a dim attribute ... you could also look
>> at the C code for is.vector.
> The first option here does not seem to work. The code
>
> SEXP dimAttr = getAttrib(smat, R_DimSymbol)
>
> does not set dimAttr to 0 (NULL) wheh smat is actually a vector.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list