2
我試圖完成與this question中解決的目標相同的目標,但我想通過兩個 grep語句過濾表。當我試試這個:基於MULTIPLE正則表達式匹配的數據表的過濾內容
DT[grep("word1", column) | grep("word2", column)]
我得到這個錯誤:
Warning message:
In grep("word1", column) | grep("word2", column) :
longer object length is not a multiple of shorter object length
,當我嘗試這個邏輯與分配新建分配FY :=
在data.table的j
參數組合,我得到各種怪異。基本上,顯然OR
運營商|
不適用於grep
在data.table的參數i
中。
我想出了一個解決辦法凌亂:
DT.a <- DT[grep("word1", column)]
DT.b <- DT[grep("word2", column)]
DT.all <- rbind(DT.a,DT.b)
但我希望有一個更好的方式來實現這一目標。有任何想法嗎?
也許只是使用'grepl',而不是'grep'? – nicola
我不確定你爲什麼會收到警告,但你應該可以用單個'grep'語句'DT [grep(「word1 | word2」,column)]'來做到這一點。或者像@nicola建議的那樣對'grepl'做同樣的事情。 – eipi10
@ eipi10其實他沒有得到一個錯誤,而是一個警告。無論如何,'grep'返回索引,而'grepl'返回一個邏輯向量('grep'是'which(grepl())'')的一種。所以他將'|'應用於整數矢量(可能長度不同,因爲每個單詞可能出現不同的次數)。 – nicola