On Nov 15, 2009, at 10:01 AM, Grzes wrote:


I heve got a list:

lista=list()
a=c(2,4,5,5,6)
b=c(3,5,4,2)
c=c(1,1,1,8)
lista[[1]]=a
lista[[2]]=b
lista[[3]]=c

lista
[[1]]
[1] 2 4 5 5 6

[[2]]
[1] 3 5 4 2

[[3]]
[1] 1 1 1 8

I would like to know where is number 5 (which line)?

For example I have got a loop:

 k= vector(mode = "integer", length = 3)

for(i in 1:3)
{
for (j in 1:length(lista[[i]])){
if ((lista[[i]][j])==5   k[i]= [i])
}
}

This loop is wrong but I would like to get in my vector k sth like this:

k = lista[[1]][1], lista[[2]][1]     ...or sth similar

I am a bit confused, since clearly lista[[1]][1] does _not_ == 5. It's also unclear what type of output you expect ... character, list, numeric?

See if these take you any further to your vaguely expressed goal:

> lapply(lista, "%in%", 5)
[[1]]
[1] FALSE FALSE  TRUE  TRUE FALSE

[[2]]
[1] FALSE  TRUE FALSE FALSE

[[3]]
[1] FALSE FALSE FALSE FALSE

> lapply(lista, function(x) which(x == 5) )
[[1]]
[1] 3 4

[[2]]
[1] 2

[[3]]
integer(0)

--


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