2016-05-01 6 views
0

Ich versuche, Werte auf Col2 zu ersetzen, die auf genauem Satz der Wörter basieren, die ich in Col1 finden mag.R - Wie man die Aufzeichnungen grep, die genauen Satz der Wörter aber sonst nichts haben

Col1     Col2 
What Machine    10 
What Machines   20 
What Machine Learning 30 

Wenn ich versuche, den folgenden grep Code mit festen = True nur Col2 Werte zu erhalten, die hat: "Was Machine" als Col1,

d[grep("What Machine", d$Col1, fixed = T),]$Col2 

es gibt alle 3 Col2-Wert (10 20 30). Aber ich möchte wirklich 10 als Antwort erhalten und durch den Wert ersetzen, den ich bevorzuge.

Jede Hilfe wird so sehr geschätzt.

+1

'% in%' oder 'match' – Sotos

Antwort

1

Da Sie eine einzelne Zeichenfolge genau übereinstimmen möchten, würde == den Trick tun.

with(d, Col2[Col1 == "What Machine"]) 
# [1] 10 

Wenn Sie noch verwenden grep() wollen, würde ich vorschlagen, Sie zu grepl() wechseln (es ist sicherer, wenn keine Spiele auftreten) und die Verwendung Anker "^What Machine$", fixed = TRUE aus dem Anruf zu entfernen.

with(d, Col2[grepl("^What Machine$", Col1)]) 
# [1] 10 
Verwandte Themen