Re: [Rd] documentation of .C (PR#9948)

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Wed, 10 Oct 2007 19:28:21 +0100 (BST)

On Wed, 10 Oct 2007, schlather_at_math.uni-goettingen.de wrote:

> Full_Name: Martin Schlather
> Version: R version 2.7.0 Under development (unstable) (2007-10-01 r43043)
> OS: Linux
> Submission from: (NULL) (91.3.209.203)
>
>
> Hi,
>
> There are 2 dangers with using 'DUP=FALSE' mentioned:
> * formal arguments
> * lists
>
> Would you also mention a third one, namely
> that values in R are now only referenced whenever
> possible and not always copied; hence .C(..., DUP=FALSE)
> may change the values of other local variables.

That has always been the case (depending on the meaning of 'possible'), and is part of the first point made. It *does* give a circumstance in which other variables can be changed. Spelling out all of those (and 'local' is not really relevant) would be a mammoth task.

> E.g., with C code
> void addone(double *x) { *x = *x + 1; }
>
> you get
>
> x <- as.double(1)
> y <- x
> .C("addone", x, PACKAGE="test", DUP=FALSE)
> print(c(x,y))
> #[1] 2 2
>
>
> x <- as.double(1)
> y <- as.double(x)
> .C("addone", x, PACKAGE="test", DUP=FALSE)
> print(c(x,y))
> #[1] 2 2
>
> x <- as.double(1)
> y <- as.integer(x)
> .C("addone", x, PACKAGE="test", DUP=FALSE)
> print(c(x,y))
> #[1] 2 1

These are the result of changing an actual argument.

-- 
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

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed 10 Oct 2007 - 18:31:39 GMT

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 25 Oct 2007 - 11:37:10 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.