Correspondance des chaînes sur les colonnes dans R
Question
J'ai un cadre de données avec 2 colonnes de caractères. J'aimerais trouver les lignes dont une colonne contient l'autre, mais grepl est étrange. Des idées?
> ( df <- data.frame(letter=c('a','b'),food = c('apple','pear','bun','beets')) )
letter food
1 a apple
2 b pear
3 a bun
4 b beets
> grepl(df$letter,df$food)
[1] TRUE TRUE FALSE FALSE
mais je veux T F F T
Merci.
La solution
Merci à la suggestion de Kevin d'utiliser "appliquer",
>
mapply (grepl, lettre $ df, nourriture $ df)
donne le résultat souhaité.
Autres conseils
Lorsque je lance votre code, je reçois un avertissement:
Warning message:
In grepl(df$letter, df$food) :
argument 'pattern' has length > 1 and only the first element will be used
Ceci est confirmé par ? grepl
sous
If a character vector of length 2 or more is supplied,
the first element is used with a warning.
Donc, grepl trouve le a dans les pommes et les poires. Cela ne résout pas votre problème (appliquez ou l'une de ses variantes?), Mais explique le résultat obtenu.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow