[R] Append selectively to components of a list
Bodea, Tudor D
gtg757i at mail.gatech.edu
Sat Sep 27 20:44:00 CEST 2008
Dear R users:
Is there a way to append selectively to components of a list (if possible, loops are to be avoided)? To illustrate the point, in the example below, I would like to append 99 to vector b of the list l.
> l <- list(a=c(1), b=c(2,3), c=c(4,5,6))
> l
$a
[1] 1
$b
[1] 2 3
$c
[1] 4 5 6
As you may expect, the result should look like:
> l
$a
[1] 1
$b
[1] 2 3 99
$c
[1] 4 5 6
I believe that a combination of match and lapply will do it, but, unfortunately, it seems that I cannot get it right. lapply alone will append the 99 to all vectors in l. Trying to somehow subset with match gives me the result expected but in a form independent of the original list (see below). I think that match should appear inside the lapply function but, for now, I just cannot make it work.
> lapply(l, function(x, y) {x<-c(x,y)}, y=99)
$a
[1] 1 99
$b
[1] 2 3 99
$c
[1] 4 5 6 99
> lapply(l[match("b", names(l))], function(x,y) x <- c(x,y), y=99)
$b
[1] 2 3 99
I use R2.7.1 on a Windows machine. Thank you so much.
Tudor
More information about the R-help
mailing list