2010-04-09 15 views
1

Voici quelques exemples de données:R: Comment passer une liste d'expressions de sélection (chaînes dans ce cas) à la fonction de sous-ensemble?

data = data.frame(series = c("1a", "1b", "1e"), reading = c(0.1, 0.4, 0.6)) 

> data 
    series reading 
1  1a  0.1 
2  1b  0.4 
3  1e  0.6 

Ce que je peux retirer des lignes simples sélectifs en utilisant sous-ensemble:

> subset (data, series == "1a") 
    series reading 
1  1a  0.1 

et tirez sur plusieurs lignes à l'aide d'une logique OU

> subset (data, series == "1a" | series == "1e") 
    series reading 
1  1a  0.1 
3  1e  0.6 

Mais Si j'ai une longue liste d'expressions en série, cela devient vraiment ennuyeux à saisir, donc je préfère les définir de manière plus précise, quelque chose comme ça:

series_you_want = c("1a", "1e") (although even this sucks a little) 

et être en mesure de faire quelque chose comme ça,

subset (data, series == series_you_want) 

ci-dessus échoue évidemment, je ne suis pas sûr de ce que la meilleure façon de le faire est?

Répondre

1

Vous voulez probablement l'opérateur %in%

> dat <- data.frame(series = c("1a", "1b", "1e"), reading = c(0.1, 0.4, 0.6)) 
> series_you_want <- c("1a", "1e") 
> subset(dat, series %in% series_you_want) 
+0

Merci, RCS, qui fonctionne très bien, j'ai aussi ajouté cette liste pour faire la série plus facile. series_you_want = "1a, 1b, 1e" série_you_want_list = unlist (strsplit (série_votre_want, ",")) – John