[R] problem extracting data from a set of list vectors

Vining, Kelly Kelly.Vining at oregonstate.edu
Wed Apr 18 22:13:44 CEST 2012


Dear useRs,

A colleague has sent me several batches of output I need to process, and I'm struggling with the format to the point that I don't even know how to extract a test set to upload here. My apologies, but I think that my issue is straightforward enough (for some of you, not for me!) that you can help in the absence of a test set. Here is the scenario:

# Data sets are lists:
> ls()
[1] "res.Callus.Explant" "res.Callus.Regen"   "res.Explant.Regen" 
> is.list(res.Callus.Explant)
[1] TRUE

# The elements of each list look like this:
> names(res.Callus.Explant)
 [1] "name"          "group1"        "group2"        "alternative"   "rows"          "counts"       
 [7] "eff.lib.sizes" "dispersion"    "x"             "beta0"         "beta.hat"      "beta.tilde"   
[13] "e"             "e1"            "e2"            "log.fc"        "p.values"      "q.values" 

I want to 1) extract specific fields from this data structure into a data frame, 2) subset from this data frame into a new data frame based on selection criteria. What I've done is this:

all.comps <- ls(pattern="^res") 
for(i in all.comps){
obj = i;
gene.ids = rownames(obj$counts);
x = data.frame(gene.ids = gene.ids, obj$counts, obj$e1, obj$e2, obj$log.fc, 
obj$p.value, obj$q.value);
DiffGenes.i = subset(x, x$obj.p.value<0.05 | x$obj.q.value<=0.1)
}

Obviously, this doesn't work because pattern searching in the first line is not feeding the entire data structure into the all.comps variable. But how can I accomplish feeding the whole data structure for each one of these lists into the loop?  Should I be able to use sapply here? If so, how? Also, I suspect that "DiffGenes.i" is not going to give me the data frame I want, which in the example I'm showing would be "DiffGenes.res.Callus.Explant." How should I name output data frames from a loop like this (if a loop is even the best way to do this)?

Any help with this will be greatly appreciated.

--Kelly V. 



More information about the R-help mailing list