Re: [Rd] debug R objects at C level

From: Duncan Murdoch <>
Date: Thu, 21 Jun 2012 08:02:03 -0400

On 12-06-21 7:38 AM, Adrian Duşa wrote:
> Dear R-devel,
> I am now at a debugging phase, and would like to inspect the
> (individual) values in an arbitrary R vector. It should be simple, but
> after hours of reading I am simply unable to find the right
> information.
> A possible C code is:
> ±±±±±±±±±±±±±±±±±
> # include<R.h>
> # include<Rinternals.h>

> # include<R_ext/Rdynload.h>
> SEXP foo(SEXP x) // where x is a vector passed by an R function
> double *px;
> int i;
> px = REAL(x);
> for (i = 0; i< length(x); i++) {
> printf("%d\n", px[i]); // not good
> }
> }
> ±±±±±±±±±±±±±±±±±
> That doesn't do the trick, because it only prints the pointer itself.
> What I'd like to do is to inspect is the actual vector value in the
> position i, that the pointer px[i] points to.
> I read about PrintVector() in Rinternals.h, but that prints the whole
> R vector, while for debugging purposes I need to inspect individual
> values, one at at time.

You seeing the value, not a pointer, but you are using an integer format to display a real. You need the %f or related format.

I would also recommend using Rprintf() rather than printf(). The latter will only work on some platforms, while Rprintf() should work everywhere.

Duncan Murdoch mailing list Received on Thu 21 Jun 2012 - 12:04:34 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 21 Jun 2012 - 12:50:30 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive