[R] writing a loop using several list()-objects
travellina
tamara.rathcke at glasgow.ac.uk
Tue Sep 13 16:26:01 CEST 2011
Hi there,
I am looking for some help with a loop which uses three list()-objects:
"sequence" has got numbers, "start" and "end" have got the begin/end time
points which should be applied to the numbers in "sequence". length() of all
three objects is identical, length() of vectors stored in "sequence" is
longer than length() of "start" and "end" whose length() is identical. Here
is an example:
> sequence[2]
[[1]]
[1] 168.848 188.440 87.291 111.333 159.921 76.987 65.633 293.320 440.708
> start[2]
[[1]]
[1] 2 5 8
> end[2]
[[1]]
[1] 4 7 9
I want to calculate sums of numbers in all start:end positions and list the
output again, e.g. I can calculate the sum of the numbers occurring
positions 2 till 4 of "sequence", i.e. between start[[2]][1] and end[[2]][1]
using this code:
sum(unlist(sequence[[2]])[unlist(Sfoot[[2]])[1]:unlist(end[[2]])[1]])
This code works perfectly fine but stops doing so if I put it into a loop:
sums <- list()
for(i in 1:length(start)) { for(j in 1:length(unlist(start[[i]]))) {
sums[[i]][j] <-
list(sum(unlist(sequence[[i]])[unlist(start[[i]])[j]:unlist(end[[i]])[j]]))
}}
The output looks like this:
> durF[[2]]
[[1]]
[1] 387.064
[[2]]
[1] 302.541
[[3]]
[1] 734.028
instead of:
> durF[[2]]
[[1]]
[1] 387.064 302.541 734.028
Something seems to be wrong with the indexing but no idea how to fix it. I
am not ambitious about creating elegant loops, they simply should work - so
please do not hesitate to make any suggestion: clunky or not, it will be
greatly appreciated as I have been stuck with this loop for a week now!
Many thanks, Tamara
--
View this message in context: http://r.789695.n4.nabble.com/writing-a-loop-using-several-list-objects-tp3810215p3810215.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list