问题标签 [grepl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
22373 浏览

regex - 在 R 中使用 grepl 完成单词匹配

考虑以下示例:

不过,我想要的是仅当它作为一个单词单独存在时才匹配“is”。通过阅读一些 perl 文档,似乎这样做的方法是使用 \b,一个可用于识别模式之前和之后的锚点,即 \bword\b 匹配 'word' 但不匹配 'sword '。所以我尝试了以下示例,使用的 Perl 语法设置为“TRUE”:

我正在寻找的输出是FALSE TRUE.

0 投票
1 回答
13209 浏览

r - 使用 grepl() 基于字符串列表的子集?

我想做一些看似非常简单的事情。我想在 R 中使用 grepl() 命令(或类似命令)在几个不同的短语上对数据框进行子集化,而无需构建循环。

例如,我想为任何名为 Bob 或 Mary 的人提取所有行:

任何想法都会有所帮助!

0 投票
1 回答
858 浏览

r - 除空 grep 之外的所有子集都返回空向量

假设我有一些字符向量,我想将其子集到与某些正则表达式不匹配的元素。我可能会使用-运算符来删除grep匹配的子集:

除了匹配的条目外,我都归还了所有内容"d"。但是,如果我搜索一个没有找到的正则表达式,而不是像我期望的那样得到一切,我什么也得不到:

为什么会这样?

0 投票
2 回答
16566 浏览

r - grepl for a period "." in R?

Lets say I have a string "Hello." I want to see if this string contains a period:

This returns results as TRUE, but it would return that as well if text is "Hello" without the period.

I'm confused, I can't find anything about this in the documentation and it only does this for the period.

Any ideas?

0 投票
2 回答
1055 浏览

regex - 从 R 中的 4 位或 6 位数字中选择两位数字

我有一个包含 4 位和 6 位数字的矩阵,它们基本上包括 2 或 3 对数字,描述重叠的形状。所以,例如,

矩阵的每个单元格都具有 a 47、 a 44、 a40或以上的某种组合,其余数字为零。我有另一个类似的数据集,但只有两对数字,而不是三对。所以,例如,

同样,该组合包含525350或它们的某种组合。我希望能够为两位数中的每一个选择一个逻辑矩阵,因此选择40indata1将 yield (TRUE,FALSE,FALSE,TRUE,TRUE,TRUE),并选择50indata2将 yield (FALSE, FALSE, FALSE, TRUE, TRUE)。我已经尝试创建一个我正在寻找的唯一两位数字的列表,并使用 grepl 来选择那些与模式匹配的数字,但是由于矩阵中的零代表空值,grepl 选择了太多的细胞; 例如,寻找40indata1会产生(TRUE, FALSE, TRUE,TRUE, TRUE, TRUE)

0 投票
3 回答
958 浏览

r - 根据通过在多个列上应用 grepl 找到的因素创建变量

我有以下数据框:

我在 Diag1-7 列之一中寻找以“A1”开头的所有 id

1)我知道如何在完整的数据框中搜索一个特定的因素:

2)我知道如何在一列中搜索模式:

A) 我想以与 1) 中相同的方式在所有列 Diag1-Diag7 上使用 grepl。

B)如果可能的话,我想创建一个名为“result”的新变量,如果行中有“A1”则包含 1,如果行中没有“A1”则包含 0。

非常感谢

0 投票
2 回答
477 浏览

r - 使用 grepl & which 使用时间序列数据验证准确的字符串拆分

我正在使用 1 分钟太阳能 PV 间隔时间序列数据,其中原始时间戳将日期和时间连接在一起。我使用 sub() 来拆分日期和时间,然后使用 cbind() 将它们添加到我的数据框中。乍一看,一切似乎都很好,但是我想构建一个小型错误检查器,以确保日期和时间与原始字符串匹配,如果它们不匹配,那么它将返回行索引以供我进一步排除故障。我的想法是使用 grepl + 来识别匹配/不匹配。下面的代码显示了我正在使用的内容。

上面 which() 的结果对应于 datetime 列中字符串中所有带有“23:56”的行。我只复制了一行返回向量以节省空间...

我知道对于我的检查器,我想识别虚假案例,现在使用 TRUE 只是为了说明。我遇到的问题与在 grepl() 中使用多个字符串有关,因为我不只是想使用一个时间值来执行此操作,而是针对我的数据框中的每一行。我尝试将 mapply 与 grepl 一起使用,但我的数据框有 478,933 个观察值,因此需要很长时间。mapply + grepl 看起来像:

我已经使用了相同的 mapply 函数,只有一系列观察值(200)。当设置为 TRUE 时,我得到 200 行的索引,使用 FALSE 我得到 integer(0) - 我理解这意味着我的数据是准确的,所以这一切可能都是不必要的......但现在我从更多的是学习/练习的观点,它将使我在处理更大的数据集时受益。

抱歉问了一个很长的问题。提前感谢您的建议。

第2部分:

我很抱歉没有提供可重复的数据。我的数据太大,无法将整个数据框发布到 SO。另外@G.Grothendieck,我正在拆分日期时间字符串,因为我将使用tapply 或split 来获取每个时间间隔的采样分布,即我将有1,440 个“桶”对应于一天中的每一分钟。每个桶将由全年的该时间间隔内的观察结果填充。

这是一个新版本(data3),它是data2的头部。我已将 data3[3,2] 的值更改为“23:57”,这与 datatime 列中的时间不匹配,因此我们可以使用它来测试您的两个解决方案。贾斯汀是第一位的,其次是 G.Grothendieck。

所以,它们都导致相同的结果......但是,当我在整个数据帧(data2)上使用 G.Grothendieck 的解决方案时,它说第 840:24279 行不匹配。这是输出的前两行:

我将不匹配的前 6 行放入一个新的 df (data4) 中。然后再次应用您的每个解决方案...

这再次表明您的解决方案是相同的,但我很困惑为什么当我在整个数据帧(data2)上使用 G.Grothendieck 时,为什么它输出 840:24279 是不匹配的。让我知道这些数据是否足够。

0 投票
1 回答
97 浏览

regex - R:不能在“+”字符上使用 grep()?

这是我的数据:

"+"为了将与分开"-",我尝试运行以下命令。

我不明白为什么相同的grepl()命令会起作用,"-"但不能起作用"+"

0 投票
1 回答
190 浏览

r - 过滤 df 列,systemIds + chararacter + numeric,sapply,grepl 过滤结果

为一个问题构建一个示例 df 导致了第二个问题。第一季度:

Q2:有没有更有效的方法来生成混合数据类型的df?这是我的尝试:

Q1:我正在过滤数据框字段,但组合过滤器语句会部分反转过滤:

这两个语句的结果给了我想要的结果:

这些语句可以结合起来产生相同的结果吗?我已经尝试了几件事,但没有一个有效。例子,

感谢您的任何评论。

0 投票
1 回答
2171 浏览

r - 连接来自R中不同行的字符串

我有一个看起来像的 R 数据框

我目前正在使用grepl来识别列 data.character 是否有我的搜索字符串"<str>",如果有,我希望将所有行值data.1连接成一个带分隔符的字符串

例如。如果我使用grepl(str1,data.character)它将返回两行df$data.1并且我想要一个输出

a,c (在 data.character 中包含 str1 的行)

我目前正在使用两个 for 循环,但我知道这不是一种有效的方法。我想知道是否有人可以提出一种更优雅、更省时的方法。