stringr::str_extract 列表 R 的所有元素
stringr::str_extract all elements of a list R
我正在尝试获取给定对象的所有“banana + 单词”出现次数,但 str_extract returns 只是第一次出现。我的代码:
all_terms <- c("banana word2 word3 word4 banana split word2 word3 word4",
"x y z",
"banana ice cream")
banana_terms <- all_terms %>%
str_extract("banana.+") %>%
word(1,2)
banana_terms
Out: [1] "banana word2" NA "banana ice"
我想要的:
Out: [1] "banana word2" "banana split", "banana ice"
使用str_extract_all
和\w+
得到banana(和banana)后面的单词。
all_terms %>%
str_extract_all("banana.\w+") %>%
unlist()
# [1] "banana word2" "banana split" "banana ice"
没有unlist,你得到一个列表:
str_extract_all(all_terms, "banana.\w+")
[[1]]
[1] "banana word2" "banana split"
[[2]]
character(0)
[[3]]
[1] "banana ice"
如果您想使用 str_extract
,您需要确保每个“香蕉词”都是向量中的一个单独元素。
str_split
用于将每个“空 space” + “香蕉”模式 (" (?=banana)"
) 拆分为单个元素。然后使用@Maël 在 str_extract
.
中提供的正则表达式 (banana.\w+
)
最后,删除向量中的NA
。
library(stringr)
all_banana <- str_extract(str_split(all_terms, " (?=banana)", simplify = T), "banana.\w+")
all_banana <- all_banana[!is.na(all_banana)]
all_banana
[1] "banana word2" "banana ice" "banana split"
在base R
中,我们可以使用regmatches/gregexpr
unlist(regmatches(all_terms, gregexpr("banana\s+\S+", all_terms)))
[1] "banana word2" "banana split" "banana ice"
我正在尝试获取给定对象的所有“banana + 单词”出现次数,但 str_extract returns 只是第一次出现。我的代码:
all_terms <- c("banana word2 word3 word4 banana split word2 word3 word4",
"x y z",
"banana ice cream")
banana_terms <- all_terms %>%
str_extract("banana.+") %>%
word(1,2)
banana_terms
Out: [1] "banana word2" NA "banana ice"
我想要的:
Out: [1] "banana word2" "banana split", "banana ice"
使用str_extract_all
和\w+
得到banana(和banana)后面的单词。
all_terms %>%
str_extract_all("banana.\w+") %>%
unlist()
# [1] "banana word2" "banana split" "banana ice"
没有unlist,你得到一个列表:
str_extract_all(all_terms, "banana.\w+")
[[1]]
[1] "banana word2" "banana split"
[[2]]
character(0)
[[3]]
[1] "banana ice"
如果您想使用 str_extract
,您需要确保每个“香蕉词”都是向量中的一个单独元素。
str_split
用于将每个“空 space” + “香蕉”模式 (" (?=banana)"
) 拆分为单个元素。然后使用@Maël 在 str_extract
.
banana.\w+
)
最后,删除向量中的NA
。
library(stringr)
all_banana <- str_extract(str_split(all_terms, " (?=banana)", simplify = T), "banana.\w+")
all_banana <- all_banana[!is.na(all_banana)]
all_banana
[1] "banana word2" "banana ice" "banana split"
在base R
中,我们可以使用regmatches/gregexpr
unlist(regmatches(all_terms, gregexpr("banana\s+\S+", all_terms)))
[1] "banana word2" "banana split" "banana ice"