[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