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.

Était-ce utile?

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 modèle :

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
scroll top