Re: [R] subsetting data-frame by vector of characters

From: Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk_at_idi.ntnu.no>
Date: Fri, 13 Jun 2008 16:25:02 +0200

james perkins wrote:
> Hi,
>
> I have a very simple problem but I can't think how to solve it without
> using a for loop and creating a large logical vector. However given
> the nature of the problem I am sure there is a "1-liner" that could do
> the same thing much more efficiently.
>
> bascially I have a dataframe with characters in, eg
>
> >names.and.numbers
>
> (index) Name Fave.Number
> 1 John 7
> 2 Tony 12
> 3 Phil 14
> 4 Adam 22
> 5 Robert 23
>
>
> Now, imagine I have a vector of names, ie:
>
> >names = c("John,Phil,Robert")

this is a one-element vector of string(s) that are concatenated names (strings with names).
or you mean: names = c("John", "Phil", "Robert")

>
> All I want to do is get the subset of the dataframe which corresponds
> to the names in the vector "Names". IE
>
> (index) Name Fave.Number
> 1 John 7
> 2 Phil 14
> 3 Robert 23

this should do:
names.and.numbers[names.and.numbers$Name %in% names,]

if names is as you say above, do
names.and.numbers[names.and.numbers$Name %in% strsplit(names,","), ]

you do create a logical vector here (what does 'large' mean?), but no loop is involved at the surface.

vQ



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. Received on Fri 13 Jun 2008 - 15:03:25 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 13 Jun 2008 - 18:30:44 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive