Re: [Rd] debug R objects at C level

From: Duncan Murdoch <murdoch.duncan_at_gmail.com>
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



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel 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 https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive