Hi,
On Wed, Apr 7, 2010 at 6:27 PM, rusers.sh <rusers.sh at gmail.com>
wrote:> Hi all,
> ?My problem may be related with the list manipulations. See below.
> #example data
> ?a<-list()
> ?a[[1]]<-data.frame(matrix(c(1:4),ncol=2));
> a[[2]]<-data.frame(matrix(c(5:8),ncol=2))
> ?I can use a[[1]]$X1,a[[1]]$X2,a[[2]]$X1,a[[2]]$X2 to use the corresponding
> variables. But what i need to do is to use function parameters to specify
> the variable names. The variable names will be different for various
> dataset, so i need a common place to indicate it.
> ?Something like,
> b<-function(var1=X1,var2=X2) {
> ?for (n in 1:2) {
> ?paste("a", "[[",n,
"]]","$","var1", sep="")
> ?paste("a", "[[",n,
"]]","$","var2", sep="")
> ?}
> }
> ?b(var1=X1,var2=X2) will have the same effect
> as a[[1]]$X1,a[[1]]$X2,a[[2]]$X1,a[[2]]$X2. Unfortunately, it does not
> work.
> ?Anybody can give me some suggestions on this? Hope it is clear for this
> question.
I'm not really sure what you're trying to do, but if you just want to
select out certain columns of a data.frame by passing the name of the
column around in someway, pass its name as a string and select the
collumn using [[var]] instead of $var.
For instance, using your data.frame ``a``. Say I want to either pull
out 'X1', or 'X2', you could do:
R> some.column <- 'X1'
R> a[[1]][[some.column]]
So whatever you are trying to do in your b() function, maybe you would
change it like so:
b <- function(var1='X1', var2='X2') {
## notice 'X1' and 'X2' are in quote in mine
...
cat(a[[n]][[var1]], '\n')
}
Also -- your call to `paste` isn't doing what I think you think it's
doing (what do you want it to do?)
Does that get you closer to what you need?
-steve
--
Steve Lianoglou
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact