[R] Select cases of data.frame based on a long index
David Winsemius
dwinsemius at comcast.net
Thu Jun 4 00:55:42 CEST 2009
On Jun 3, 2009, at 6:21 PM, tsunhin wong wrote:
> Dear R users,
>
> I know how to select a subset of a data.frame or a matrix by setting
> some criteria, but this time, I have a long index of cases not really
> related to 1 or 2 criteria.
> And I cannot find a simple way to select cases from another data.frame
> based on this index (sublst in this example).
>> sublst<-unique(g[comp.lst[[2]],]$Subject)
>> sublst
> [1] 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 41 42
> 43 44 45 46 47 48 49
> [30] 50 51 52 53 54 55 56 57 58 59 60 62 63 64
>> foo.lst <- subset(gTrialList,(TrialList==1 & Subject==sublst))
Difficult because no reproducible code with data is offered. Have you
considered substituting %in% for the "==" operator in subset?
>>
> Error: longer object length is not a multiple of shorter object
> length
Subject would be unlikely to be "==" to that vector.
>
>
>> foo.lst <- subset(gTrialList,(TrialList==1))
>> foo.lst[foo.lst$Subject==sublst]
Again, perhaps %in% might do the trick (if you also added a missing
comma.)
> s <- data.frame(cnt=1:10, LT=sample(LETTERS, 10) )
> s
cnt LT
1 1 U
2 2 G
3 3 F
4 4 P
5 5 H
6 6 M
7 7 Q
8 8 N
9 9 T
10 10 B
>
> s[s$LT %in% c("F","N"), ]
cnt LT
3 3 F
8 8 N
>>
> Error:
> In foo.lst$Subject == sublst :
> longer object length is not a multiple of shorter object length
>
> The only way I know is to use a for-loop to exhaust the index and then
> combine the cases back together. But will there be a simpler way to do
> so?
>
> Thank you very much for the help!
>
> - John
>
> ______________________________________________
> 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.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list