Mark,
It is not clear whether you are dealing with a single list or something more
complex, such as a list of lists or a list of data frames. In the case of a
single list, you don't really need any of the 'apply' functions.
The main
problem in your code is the use of '&&' instead of
'&':
> test.1 <- list(id = 1:50, tick = rnorm(50, 900, 50), tvis =
sample(1:100,
50))> test.1
$id
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29
[30] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
$tick
[1] 891.5450 997.4262 884.0224 892.8317 903.7194 862.7283 913.8126
895.6072
[9] 923.2599 823.0804 828.0575 919.2257 879.8593 833.6082 924.6253
889.6797
[17] 880.2397 1022.9587 898.3806 953.0213 911.8132 932.3018 960.7257
905.0871
[25] 1018.8407 991.3910 931.3846 960.0569 793.5923 899.3268 921.0783
929.6885
[33] 940.9550 882.9791 914.9050 897.7252 970.7575 867.9848 901.2766
912.0851
[41] 856.8671 878.3230 906.9869 903.8044 882.1902 972.3030 923.9107
869.6903
[49] 836.6934 912.6101
$tvis
[1] 67 8 89 36 91 30 63 38 22 44 18 79 48 90 82 6 81 39 69 7 45 86 32 43
99 23 34 54 37
[30] 1 15 5 14 87 77 27 93 94 71 60 83 62 92 72 26 80 58 98 84 78
> test.1$id > 10 & test.1$tick > 910
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
FALSE FALSE
[15] TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
TRUE TRUE
[29] FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE
FALSE FALSE
[43] FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE
> test.1$tvis[test.1$id > 10 & test.1$tick > 910]
[1] 79 82 39 7 45 86 32 99 23 34 54 15 5 14 77 93 60 80 58 78
If this is not what you have, it would be helpful to provide an example of
the data structure that you are dealing with, as the posting guide suggests.
-Christos
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Altaweel, Mark R.
> Sent: Tuesday, August 19, 2008 4:10 PM
> To: r-help at r-project.org
> Subject: [R] conditional with and operators
>
> Hi,
>
> I have a problem in which I am parsing data from a list. I
> am simply trying to return data that has several conditions
> being true. Here is my syntax below:
>
> d<-sapply(res,function(.df){(.df$TimesVisited[.df$Tick>912 &&
> .df$Id>0])}) #res is the list, and I am trying to return a
> result that has two true conditions (that is the variable
> Tick should be greate than 912 and Id should be greater than 0
>
> This returns an array of 10 with integer values of 0. This is
> the incorrect result
>
> However, if I do the same syntax except I remove the &&
> statement (i.e. the second conditional), then the result
> producing something that makes sense, which is all values
> that are Tick and greater than 912.
>
> Can someone let me know how I can setup my data to be parsed
> so I can have 2 or multiple conditionals in my function that
> is looking at an array.
>
> Thanks in advance.
>
> Mark
>
> ______________________________________________
> 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.
>
>