如何确定一个字符串中的数字是否包含在另一个字符串中

时间:2019-03-14 20:55:20

标签: r grep

我有几个字符串:

s1 <- "Sample 1, Sample 2, Sample 3"
s2 <- "Sample..1"
s3 <- "Sample..4"

如何确定s1中是否包含每个字符串中的数字?在这种情况下,我希望对于s2为TRUE,对于s3为FALSE。

2 个答案:

答案 0 :(得分:0)

sapply(mget(c("s2", "s3")), function(x) grepl(gsub("\\D+", "", x), s1))
#   s2    s3 
# TRUE FALSE 

您可以将gsub("\\D+", "", x)替换为unlist(strsplit(x, "..", fixed = TRUE))[2]。第一个用空格替换所有非数字。第二个在..处分割字符串,并获取第二个元素。

答案 1 :(得分:0)

一些tidyverse建议(使用上述帖子中@ d.b的相同策略:

library(tidyverse)

map(mget(c("s2", "s3")), ~grepl(gsub("\\D+", "", .x), s1))  # List output
map_chr(mget(c("s2", "s3")), ~grepl(gsub("\\D+", "", .x), s1)) # Character output
map_df(mget(c("s2", "s3")), ~grepl(gsub("\\D+", "", .x), s1)) # tibbe/df output
map_lgl(mget(c("s2", "s3")), ~grepl(gsub("\\D+", "", .x), s1)) #This strictly cheks the return is only logical