[R] Newbie trying to understand $ so I can understand acf function in stats

Peter Ehlers ehlers at ucalgary.ca
Wed Dec 8 20:37:29 CET 2010


On 2010-12-08 09:16, Dick Knox wrote:
> I am trying to understand the function acf
> stats:::acf shows me the function
>
> I am having trouble understanding the usage "$acf" in the following
>
>     acf<- array(.C(R_acf, as.double(x), as.integer(sampleT),
>           as.integer(nser), as.integer(lag.max), as.integer(type ==
>               "correlation"), acf = double((lag.max + 1L) * nser *
>               nser), NAOK = TRUE)$acf, c(lag.max + 1L, nser, nser))
>
> I interpret it as ... we are forming an array of dimensionality 3, and
> the contents of the array come from invoking a C program R_acf while the
> values of the 3 dimensions are lag.max + 1L, nser, and nser.
>
> simplified acf<-array(.C(args)$acf, c(some dimensions))
>

[...snip...]

>
> R Language Definition section 3.4 "Indexing" explains that $ is used in
> indexing.
> But
> The light is not coming on when I try to apply that knowledge to
> understanding what is happening here.
>
> Can anyone suggest a path out of the darkness?

Here's a flashlight:
The .C() call returns a list of 6 objects, one of which is a vector
named 'acf'. That one is extracted by the '.C()$acf' construct and
is then used in creating the array.

>
> Also, when I search my system for a file named R_acf, I dont find one.
> I assume that this is because R_acf got task built into an executable
> and my distribution has the executable? I got R from "yum install R" on
> fedora linux. To see the source I apparently need to download a full
> compilable distribution of R.

You can download the sources from CRAN: get R-patched.tar.gz. If you
frequently want to look at source code, it's probably a good idea to
have that file locally. It will include comments that are stripped
out of the compiled version.

Or you can access the sources online (and hence most up-to-date) at:

  https://svn.r-project.org/R/trunk/src/

where you will find acf in

  https://svn.r-project.org/R/trunk/src/library/stats/src/filter.c

(and no, it's not called R_acf there; the 'R_' gets added in
compilation).

Uwe Ligges has written an article in R News (October 2006) on
accessing sources.


Peter Ehlers



More information about the R-help mailing list