如何使用R使用通配符识别字符串?

时间:2017-12-07 18:11:47

标签: r string wildcard

我想计算一个字符串后面包含数字“0”的单词的持续时间,如图所示(我在带有我想要处理的字符的单词下插入一个红点)。 是否有类似通配符的东西,以便我只能使用包含此字符串的单词?

enter image description here

4 个答案:

答案 0 :(得分:0)

使用:

grep('0',resultado2$TextGridLabel) 

查找带有0的行。如果要查看搜索参数子集化的整个数据集,只需使用括号:

resultado2[grep('0',resultado2$TextGridLabel),] 

答案 1 :(得分:0)

您应该阅读?regex返回的帮助。它将为您提供在R中使用正则表达式的摘要。它还将向您介绍可以使用正则表达式的各种函数。

例如,如果您上面的数据位于数据框中,则为df:

grep(x=df$TextGridLabel, pattern="^.*0.+$")

将返回以any开头的所有值的索引,包含0且在0之后至少有一个字符。

干杯!

答案 2 :(得分:0)

如果filename不属于匹配项,可以使用filename列来避免匹配正则表达式:

library(dplyr)
library(purrr)

df %>%
  mutate(no_filename = map2_chr(filename, text, ~gsub(.x, '', .y))) %>%
  filter(grepl("^0", no_filename)) %>%
  select(-no_filename)

<强>结果:

  filename      text     value
1       S2  S20XXXXX 0.2065314
2       S3  S30XXXXX 0.8146400
3       S4  S40XXXXX 0.8123895
4       S6  S60XXXXX 0.1111354
5       S7  S70XXXXX 0.1028646
6       S9  S90XXXXX 0.1306957
7       S9  S90XXXXX 0.3203732
8      S10 S100XXXXX 0.1876911

注意:

请注意,S100XXXXX是匹配的,而不是S101XXXXX

数据:

library(dplyr)
df = data.frame(filename = rep(paste0('S', 1:10), each = 5))
set.seed(123)
df = df %>%
  mutate(text = paste0(filename, sample(c(0:5), 50, replace = TRUE), 
                     paste(rep('X', 5), collapse = "")),
         value = runif(50))

答案 3 :(得分:0)

下面的代码确实有效,基本上就是我需要的。

resultado2[grep('0',resultado2$TextGridLabel),] 

但是,我想避免在S10XXXXXXX中使用TextGridLabel等数据。我刚刚编辑了原帖,以便新图片更好地展示了我想要考虑的内容。