An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110108/e3549032/attachment.pl>
Question on list objects
4 messages · Ron Michael, Gabor Grothendieck, Charles C. Berry +1 more
On Sat, Jan 8, 2011 at 6:26 AM, Ron Michael <ron_michael70 at yahoo.com> wrote:
Hi, I have 2 questions on list object:
1. Suppose I have a matrix like:
dat <- matrix(1:9,3)
Now I want to replicate this entire matrix 3 times and put entire result in a list object. Means, if "res" is the resulting list then I should have:
res[[1]]=dat, res[[2]]=dat, res[[3]]=dat
How can I do that in the easilest manner?
2. Suppose I have 2 list objects:
list1 <- list2 <- vector("list", length=2)
for(i in 1:2) {
??list1[[i]] <- matrix(rnorm(15), 3)
??list2[[i]] <- matrix(rnorm(15), 3)
?}
How can I add these 2 list objects? I have tried with just list1+list2, however it is generating some error.
Try these: rep(list(dat), 3) Map(`+`, list1, list2)
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
On Sat, 8 Jan 2011, Ron Michael wrote:
Hi, I have 2 questions on list object: ? 1. Suppose I have a matrix like: dat <- matrix(1:9,3) ? Now I want to replicate this entire matrix 3 times and put entire result in a list object. Means, if "res" is the resulting list then I should have: ? res[[1]]=dat, res[[2]]=dat, res[[3]]=dat ? How can I do that in the easilest manner?
See ?rep ... Examples ... ## replicate a list ...
?
2. Suppose I have 2 list objects:
list1 <- list2 <- vector("list", length=2)
for(i in 1:2) {
??list1[[i]] <- matrix(rnorm(15), 3)
??list2[[i]] <- matrix(rnorm(15), 3)
?}
How can I add these 2 list objects? I have tried with just list1+list2, however it is generating some error.
?
See ?mapply take note of the SIMPLIFY arg, which you want as FALSE HTH, Chuck
Would be grateful for any help. ? Thanks, [[alternative HTML version deleted]]
Charles C. Berry Dept of Family/Preventive Medicine cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
Hi Ron,
Here you go.
Cheers,
Josh
dat <- matrix(1:9,3)
ldat <- list(dat, dat, dat)
ldat[[1]] == dat
## Or
lapply(1:3, function(x) dat)
## which is similar in spirit to
output <- vector("list", 3)
for(i in 1:3) {
output[[i]] <- dat
}
list1 <- list2 <- vector("list", length=2)
for(i in 1:2) {
list1[[i]] <- matrix(rnorm(15), 3)
list2[[i]] <- matrix(rnorm(15), 3)
}
lapply(1:2, function(x) {list1[[x]] + list2[[x]]})
## This can be done more simply
lapply(1:2, function(x) {matrix(rnorm(15), 3) + matrix(rnorm(15), 3)})
On Sat, Jan 8, 2011 at 3:26 AM, Ron Michael <ron_michael70 at yahoo.com> wrote:
Hi, I have 2 questions on list object:
1. Suppose I have a matrix like:
dat <- matrix(1:9,3)
Now I want to replicate this entire matrix 3 times and put entire result in a list object. Means, if "res" is the resulting list then I should have:
res[[1]]=dat, res[[2]]=dat, res[[3]]=dat
How can I do that in the easilest manner?
2. Suppose I have 2 list objects:
list1 <- list2 <- vector("list", length=2)
for(i in 1:2) {
??list1[[i]] <- matrix(rnorm(15), 3)
??list2[[i]] <- matrix(rnorm(15), 3)
?}
How can I add these 2 list objects? I have tried with just list1+list2, however it is generating some error.
Would be grateful for any help.
Thanks,
? ? ? ?[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/