我试图选择列表中所有具有类似于字符串名称的元素。
x <- list('not_bob' = list(1,2,3), 'bob' = list(1,4,5), 'Al' = '1', 'Ally' = '3')
e <- x[names(x) %in% c('bob', '%Al%')]
所需的输出:
e
包含bob
,Al
和Ally
。
答案 0 :(得分:0)
您应该使用正则表达式。在R中,可以使用grepl
函数来完成此操作:
e <- x[grepl("^bob$|^Al.*$", names(x))]
|
分隔不同的字符串,^
表示字符串的开头,$
-字符串的结尾,.*
表示任意数量的任何符号。如果您的需求更复杂,则可能需要更多地研究正则表达式。
答案 1 :(得分:0)
如果您对正则表达式不满意(这是可以理解的!),则可以继续使用“普通通配符”。要使用已显示的SQL模式,需要进行一些翻译,因此,我建议您稍加改用通配符或通配符。
例如,您在SQL中的"%Al%"
等效于:
"*Al*"
glob2rx("*Al*")
-> "^.*Al"
({{1}之后不需要任何东西,因为regex有点缺乏限制...与Al
进行比较)差异)尝试一下:
glob2rx("*Al")