Extracting multiple elements from a list
"Waichler, Scott R" wrote:
Brian described well the operation I would like to do. I'm not familiar with do.call() but I'll work on that. Yes, ideally I would like to access values throughout a list object with fully implict indexing, such as the invalid "alist[[1:2]]$vec[c(2, 4)]". Notice I was hoping to subset anywhere in the data structure. Since I can't do this subsetting with indexing directly, I was looking for handy (and hopefully fast) functions that could be defined generically and then called with arguments. The use of sapply() and lapply() with function(i) seem promising, but do not quite cover the functionality I was looking for.
The functions sapply() and lapply() have more generality that has been overlooked in this thread. This will answer your first question.
unlist(lapply(alist, function(x, ind = c(2,4)) x$vec[ind]))
[1] 2 4 6 8
hth,
Julian
--- Julian Taylor phone: +61 8 8303 6751 ARC Research Associate fax: +61 8 8303 6760 BiometricsSA, mobile: +61 4 1638 8180 University of Adelaide/SARDI email: julian.taylor at adelaide.edu.au Private Mail Bag 1 www: http://www.BiometricsSA.adelaide.edu.au Glen Osmond SA 5064 "There is no spoon." -- Orphan boy ---