2017-02-27 152 views
1

我想基於附加到元素的特殊字符來列表子集。我發現了多個結果,但我認爲我缺乏對如何處理特殊字符和查找包含特殊字符的元素的理解。我希望結果中包含所有包含'**'的元素。我很感激任何幫助,如果有類似的問題,我沒有找到,我很抱歉。在列表子集時處理特殊字符的一般答案也將非常感謝。感謝您的時間。選擇具有特殊字符的列表元素

例-代碼:

x1 <- c('a**', 'b', 'c**') 
x2 <- c('d**', 'b', 'e**') 

y <- list(x1,x2) 

#Here are a couple of results i tried: 

grep('\\**', y, value =TRUE, ignore.case = TRUE) 

y[lapply(y, function(x) x[grep("[^\\**]", x),])] 

Filter(function(x) !any(grepl("[^\\**]", x)), y) 

y[y = "[^\\**]"] 
+3

'grep的( 「\\ * \\ *」,不公開(y)時,值= TRUE)'。您需要爲每個* –

+0

轉義(\\\)謝謝!這非常快! – Simon

+2

或grep(「\\ * {2} $」,unlist(y),value = TRUE)'如果您有更多的重複次數並且美元符號確保它位於字符串的末尾,那麼這會更容易 –

回答

1

我們可以用與grepfixed=TRUE

grep("**", unlist(y), value = TRUE, fixed = TRUE) 
#[1] "a**" "c**" "d**" "e**" 
+2

我欣賞你回答我的問題的時間,但我無法理解你在我的問題的背景下提供的解決方案。你能否詳細說明一下? – Simon

+0

@Simon請檢查'grep'輸出。我想這就是你想要的> – akrun

+0

謝謝。 grep輸出完美工作,但是,不幸的是,子串不用於選擇元素。 – Simon