我有几个字符串:
s1 <- "Sample 1, Sample 2, Sample 3"
s2 <- "Sample..1"
s3 <- "Sample..4"
如何确定s1中是否包含每个字符串中的数字?在这种情况下,我希望对于s2为TRUE,对于s3为FALSE。
答案 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