2017-11-21 2 views
2

Kann jemand erklären, warum% in% in diesem Fall false zurückgibt? Die Zeichenfolge <sentiment> existiert in der größeren Zeichenfolge.Warum gibt% in% false zurück, wenn die Zeichenfolge übereinstimmt?

> x<-"hahahaha <sentiment>too much</sentiment> <feature>doge</feature>." 
> "<sentiment>" %in% x 
[1] FALSE 
+3

'% in%' entspricht R-Objekten, nicht Wörtern innerhalb einer Zeichenfolge. Vielleicht willst du 'grepl'? – Gregor

Antwort

4

%in% überprüft, ob der frühere Element eines der Elemente in der letzteren übereinstimmt. In diesem Fall hat x nur das Element"hahahaha <sentiment>too much</sentiment> <feature>doge</feature>.", nicht "<sentiment>", also "<sentiment>" %in% x gibt FALSE zurück. Zum Beispiel gibt folgende Formel TRUE:

y = c(x, "<sentiment>") 
# > y 
# [1] "hahahaha <sentiment>too much</sentiment> <feature>doge</feature>." 
# [2] "<sentiment>" 

"<sentiment>" %in% y 
# [1] TRUE 

Wenn Sie, ob "<sentiment>" überprüfen wollen, ist ein Teilzeichenfolge von x verwenden grepl:

grepl("<sentiment>", x, fixed = TRUE) 
# [1] TRUE 

oder verwenden str_detect von stringr:

stringr::str_detect(x, fixed("<sentiment>")) 
# [1] TRUE 
1

%in% ist der Operator match, der dem match function entspricht. Es sucht nach einem Objekt in einem Vektor (oder ähnlich), nicht nach einer Teilzeichenfolge in einer Zeichenfolge.

Um in einer Zeichenkette zu suchen, verwenden Sie einen der pattern matching functions, wie grep oder ähnlich.

Verwandte Themen