[R] using list to pass argument to function

TyagiAnupam@aol.com TyagiAnupam at aol.com
Sat Nov 16 23:52:50 CET 2002

Thanks for the clarifications. All the symbols below refer to scalars, unless they are assigned to a non-scalar explicitly.

I am trying to do the following. Would like to avoid using for-loops where possible, so that program can also be used in S efficiently.

1. Create an CxC contingency table (matrix) with certain cell frequencies: Is there are better way of assigning "population" probabilities of cells to contingency table and sampling from it? 
2. Use the contingency table sampling function suggested by Ripley to create a sample ("population sample"), of size n.
3. Compute row and col frequencies and estimates of marginal probabilities: below f1 computes c,d for 2x2 (for a row and a col, the other can be calcualted by 1-c, 1-d inside a fucntion that uses them: f3args).
4. Compute K statistics based on marginal probabilities: f3args does this.
5. use R bootstrap samples of size n based on marginal probabilities to compute standard errors for the statistics estimates.
6. for each population sample use R samples based on *population cell probabilities* and compute same std errs (SD in this case) ("MC-SD"). 
7. Do this for M samples from population k <- below attempts that (sorry for overloading on R, that should be different, say S): that is, repeat steps 2--6, M times (M is the value of S variable).
8. Store the MxK statistics from popoulation samples, their std. errs, and corresponding MC-SD's in a matrix for use,((Mx(3xK)) matrix.

A question: I think the point is to differentiate between a vector of arguments and a list of arguments, because a vector of arguments is treated as value of one argument. Right? Then, how does one pass a list as a value for one argument, without converting it into a vector?

Another Question: what is a good way to update R from disk (not online--can't get the wireless drivers to work on SuSE 7.1. So, have to use windows for internet.)?


******Brian Ripley wrote*******

> A brief follow up on an earlier posting. Thanks for the earlier suggestion. 
> How does it matter if I pass a list or a vector of 
> arguments to a function that is written to take individual arguments: 

Yes, it does. 

> f3args <- function(a1, a2, a3) { definition} 
> f1 <- function(b1, b2) { 
> calculations 
> n <- samplesize 
> b<- someestimate 
> c<- anotherestimate 
> d <- c(n, b, c) 
> h <- sapply(rep(d, R), f3args) 
> } 
> e <- c(m, n) 
> k <- sapply(rep(e, R), f1) 
> Is there a problem with this. 

It seems to be incomplete, so it's hard to tell what you intended. For 
example, R is undefined. But you are not passing a 
second argument to f1. You do that via an extra argument to sapply. 

> Can one pass a vector of arguments to a 
> fucntion that is written for individual arguments. What would be a good way 
> for doing this? 


as in do.call("f1", as.list(e)) 

Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/

Pleasures, like flowers, may wither and decay, 
And yet the root perennial may be.
   --H.W.Longfellow, ``Memories"
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list