次のようなデータフレームがあるとします。
User.Id Tags
34234 imageUploaded,people.jpg,more,comma,separated,stuff
34234 imageUploaded
12345 people.jpg
grep (または他のツール) を使用して、「imageUploaded」と「people」の両方を含む行のみを取得するにはどうすればよいでしょうか。言い換えると、順序に関係なく、文字列「imageUploaded」と「people.jpg」の両方を含む行だけを含むサブセットを作成するにはどうすればよいでしょうか。
私が試してみました:
data.people<-data[grep("imageUploaded|people.jpg",results$Tags),]
data.people<-data[grep("imageUploaded?=people.jpg",results$Tags),]
AND 演算子はありますか? あるいは、意図した結果を得るための別の方法はありますか?
ベストアンサー1
感謝この答え、この正規表現は機能するようです。grepl()
データ オブジェクトにインデックスを付けるために論理値を返す を使用します。正規表現の内部動作を完全に理解していると主張するつもりはありませんが、とにかく:
x <- c("imageUploaded,people.jpg,more,comma,separated,stuff", "imageUploaded", "people.jpg")
grepl("(?=.*imageUploaded)(?=.*people\\.jpg)", x, perl = TRUE)
#-----
[1] TRUE FALSE FALSE