我有一个向量列表,我想创建一个新列表,该列表包含任何包含字母“ a”的值,但保持内部结构。
l = list ( g1 = c('a','b','ca') ,
g2 = c('a','b') )
lapply(l, function(x) grep('a',x) )
lapply on提供索引号,但我希望它返回的是值。 最终结果应该是一个列表,其中向量g1包含a和ca,而g2仅包含a。
谢谢!
答案 0 :(得分:2)
添加value = TRUE
。
lapply(l, function(x) grep('a', x, value = TRUE))
# $g1
# [1] "a" "ca"
#
# $g2
# [1] "a"
答案 1 :(得分:1)
或者,您可以执行以下操作:
lapply(l, function(x) x[grepl("a", x)])
$g1
[1] "a" "ca"
$g2
[1] "a"
答案 2 :(得分:0)
如果您想尝试使用tidyverse
,可以使用以下两种方法。
library(tidyverse)
map(l, ~grep('a', .x, value=T))
map(l, ~str_subset(.x, 'a')) # str_subset from stringr package is a wrapper for grep shown above.