带有grep的向量列表的子集?
subset of list of vector with grep?
我有一个矢量列表,我想创建一个新列表,其中包含包含字母 'a' 但保留内部结构的任何值。
l = list ( g1 = c('a','b','ca') ,
g2 = c('a','b') )
lapply(l, function(x) grep('a',x) )
lapply on 提供了索引号,但我希望它 return 是值。
最终结果应该是一个列表,其中向量 g1 包含 a 和 ca,而 g2 仅包含 a。
谢谢!
添加value = TRUE
.
lapply(l, function(x) grep('a', x, value = TRUE))
# $g1
# [1] "a" "ca"
#
# $g2
# [1] "a"
或者,您可以这样做:
lapply(l, function(x) x[grepl("a", x)])
$g1
[1] "a" "ca"
$g2
[1] "a"
如果您想尝试 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.
我有一个矢量列表,我想创建一个新列表,其中包含包含字母 'a' 但保留内部结构的任何值。
l = list ( g1 = c('a','b','ca') ,
g2 = c('a','b') )
lapply(l, function(x) grep('a',x) )
lapply on 提供了索引号,但我希望它 return 是值。 最终结果应该是一个列表,其中向量 g1 包含 a 和 ca,而 g2 仅包含 a。
谢谢!
添加value = TRUE
.
lapply(l, function(x) grep('a', x, value = TRUE))
# $g1
# [1] "a" "ca"
#
# $g2
# [1] "a"
或者,您可以这样做:
lapply(l, function(x) x[grepl("a", x)])
$g1
[1] "a" "ca"
$g2
[1] "a"
如果您想尝试 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.