2017-02-27 99 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