2009-10-29 14 views
5

Ich habe einen Datenrahmen mit 2 Zeichen Spalten. Ich möchte die Reihen finden, die eine Spalte die andere enthält, aber grepl ist seltsam. Irgendwelche Ideen?Übereinstimmende Strings über Spalten in R

> (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 

aber ich will T F F T

Dank.

Antwort

5

Dank Kevin Vorschlag anwenden zu verwenden,

> mapply (Grepl, df $ Brief, df $ Essen)

Ergebnisse in der gewünschten Ausgabe.

2

Wenn ich Ihren Code ausführen, erhalte ich eine Warnung:

Warning message: 
In grepl(df$letter, df$food) : 
    argument 'pattern' has length > 1 and only the first element will be used 

Das von ?grepl bestätigt wird unter pattern:

If a character vector of length 2 or more is supplied, 
the first element is used with a warning. 

So Grepl das eine findet sowohl in Apfel und Birne. Dies löst nicht Ihr Problem (anwenden oder eine seiner Varianten?), Aber es erklärt die Ausgabe, die Sie erhalten.

+0

Danke. Anscheinend ist die Warnung in R Version 2.10.0 neu. – novembera

+0

Ich benutze: R Version 2.10.0 gepatcht (2009-10-28 r50254) x86_64-apple-darwin9.8.0 – kmm

Verwandte Themen