On Jan 29, 2010, at 9:31 AM, johannes rara wrote:

How to vectorize this for loop and how can I assign result to vector
instead of using print function?

> as.vector( sapply(mylist$a, function(x)
                           sapply(mylist$b, function (y)
                                       { c(x,  y, mylist[[3]]) }
            ) ) )

[1] "a" "A" "1" "2" "3" "a" "B" "1" "2" "3" "a" "C" "1" "2" "3" "b" "A" "1" "2" "3" "b" "B" "1" "2" [25] "3" "b" "C" "1" "2" "3" "c" "A" "1" "2" "3" "c" "B" "1" "2" "3" "c" "C" "1" "2" "3"

You did say you wanted a vector, right?

--
David.


mylist <- list(a = letters[1:3], b = LETTERS[1:3], c = c("1", "2", "3"))

for (i in seq_along(mylist[[1]])) {
    for (j in seq_along(mylist[[2]])) {
       print(mylist[[1]][i])
       print(mylist[[2]][j])
       print(mylist[[3]])
    }
}


Run version:

mylist <- list(a = letters[1:3], b = LETTERS[1:3], c = c("1", "2", "3"))
mylist
$a
[1] "a" "b" "c"

$b
[1] "A" "B" "C"

$c
[1] "1" "2" "3"

for (i in seq_along(mylist[[1]])) {
+      for (j in seq_along(mylist[[2]])) {
+         print(mylist[[1]][i])
+         print(mylist[[2]][j])
+         print(mylist[[3]])
+      }
+ }
[1] "a"
[1] "A"
[1] "1" "2" "3"
[1] "a"
[1] "B"
[1] "1" "2" "3"
[1] "a"
[1] "C"
[1] "1" "2" "3"
[1] "b"
[1] "A"
[1] "1" "2" "3"
[1] "b"
[1] "B"
[1] "1" "2" "3"
[1] "b"
[1] "C"
[1] "1" "2" "3"
[1] "c"
[1] "A"
[1] "1" "2" "3"
[1] "c"
[1] "B"
[1] "1" "2" "3"
[1] "c"
[1] "C"
[1] "1" "2" "3"


______________________________________________
R-help@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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to