问题标签 [stringi]
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.
regex - 之后如何找到带有逗号和零的整数(正则表达式)?
我尝试创建正则表达式来提取所有整数。提取非整数的实数可以是6 -12bur also+6.000或-5,0and onother ,例如3.14, -6,26but no 5.0。
为了查找整数,我尝试过"^[+-]?([0-9]+)(\\[.,]0{1,})?$",但它不适用于-6.00. 而且我不知道如何创建第二个正则表达式(如何排除带有逗号或点的整数,然后是零)。任何帮助表示赞赏。
regex - gsub 速度与图案长度
我最近一直在gsub广泛使用,我注意到短模式比长模式运行得更快,这并不奇怪。这是一个完全可重现的代码:
如您所见,我正在寻找包含a重复rpt[n]时间的模式。正如预期的那样,斜率为正。但是,我注意到 300 个字符fixed=T和 600 个字符出现扭结,fixed=F然后斜率似乎与以前大致相同(见下图)。我想,这是由于内存、对象大小等原因。我还注意到允许的最长pattern符号是 1463 个符号,对象大小为 1552 字节。
有人可以更好地解释这个扭结,为什么要 300 和 600 个字符?

补充:值得一提的是,我的大多数模式都是 5-10 个字符长,这为我的真实数据(不是inp上面示例中的模型)提供了以下时间。
(我有 4k 模式,所以我的模块的总时间大约是 200 秒,这恰好是 0.05 x 4000 与 gsub 和固定 = TRUE。这是我的数据和模式最快的方法)

r - 如何从存档安装 stringi 库并安装本地 icu52l.zip
我们正在努力让一些 R 代码在生产环境中工作,作为其中的一部分,我们正在安装一些 R 包,如下所示:
这可能不是安装 R 包的最优雅的方式,但对我们来说似乎没问题(任何其他关于 R 包管理的技巧都会受到欢迎,但在这个阶段有点晚了:)。
但是,stringi 包似乎依赖于 icu52l 包,它通过网络安装:
我们如何告诉它寻找本地副本?输出很容易包含远程位置(http://static.rexamine.com/packages/icudt52l.zip),所以我们可以自己把它放在某个地方,但不确定在哪里。
也许我们正在以完全错误的方式解决这个问题,但欢迎任何帮助或指示。
我们在 ubuntu 机器上,也尝试过安装 libicu42 和 libicu-dev,但这些似乎都没有帮助。
r - stri_split_fixed 在 R 中的 data.table 中
我有一个 data.tableDT如下。
我正在尝试将列拆分V2为“<<”并在两个新列中获取输出。
我可以使用以下方法完成它stringi
但是,我想使用:=运算符通过引用来做同样的事情。如何使用 data.table 做到这一点?
我对 RHS 部分有困难。
stri_split_fixed(DT$V2, "<<", 2)给出长度为 2 的字符向量的 3 列表。如何获得长度为 3 的字符向量的 2 列表?
r - 根据字典中单词的值检索句子分数
编辑 df和dict
我有一个包含句子的数据框:
还有一个包含单词及其相应分数的字典:
我想附加一个“分数”列df,将每个句子的分数相加:
预期成绩
更新
以下是迄今为止的结果:
阿克伦的方法
建议一
请注意,要使此方法起作用,我必须使用data_frame()创建df而dict不是data.frame()否则我得到:Error in strsplit(text, " ") : non-character argument
这不考虑单个字符串中的多个匹配项。接近预期的结果,但还没有完全达到。
建议二
我在评论中对 akrun 的建议进行了一些调整,以将其应用于已编辑的帖子
这不考虑字符串中的多个匹配项:
理查德斯克里文的方法
建议一
更新所有软件包后,现在可以使用(尽管它不考虑多个匹配项)
建议二
这给出了相同的结果:
建议 3
这实际上有效:
Thelatemail的方法
请注意,我添加了该cbind()部分。这实际上符合预期的结果。
最终答案
受 akrun 建议的启发,这是我最终写的最典型的dplyr解决方案:
尽管我会执行 Richard Scriven 的建议 #3,因为它是最有效的。
基准
以下是适用于更大数据集(df93 个句子和dict14K 单词)的建议microbenchmark():
结果:

regex - 如何在R中字符向量的每个元素中用点替换破折号?
有没有一种简单的方法可以用 R 中字符向量的每个元素中的点替换破折号?
正在寻找stringi包裹中的帮助,但找不到答案。有stri_substitute功能,但不知道怎么用。
regex - 使用哪个正则表达式在 R 中的 stri_regex 中提取适当的信息?
我正在尝试gdac.broadinstitute.org_在 R 中的该字符中提取该单词之后的名称
我stri_extract从stringi包中使用,但看起来我对正则表达式不太了解。我试过这样的事情:
任何人都可以帮忙吗?
r - 在R中根据“^”拆分字符串
我需要拆分并获取之前的所有字符^
示例:我在数据框中有一列读取
并且同一数据框中的结果列应为:
我尝试使用stringr, strsub{base}, stringi, gsubfn. 但他们抛出了奇怪的结果,因为^. 我无法更换^,因为这张桌子实在是太大了。
r - 使用 stringi 和 gsub 的不同输出(在同一字符串上使用相同的模式)
我想知道为什么我使用 gsub 和 stringi 获得两个不同的输出字符串。元字符是否“。” 在 stringi 中不包括新行?stringi 是否读取“逐行”?
顺便说一句,我没有找到用 stringi 执行“正确”替换的任何方法,所以我需要在这里使用 gsub。
r - R中dplyr包中变异函数的奇怪行为
我正在制作一个有尺寸的集合
第二列看起来或多或少像这样:
对于每一行,我想从topics列中选择:符号后等级最高的单词。我尝试使用dplyr包中的 mutate 函数,它看起来好像不起作用。stringi使用更快版本的包制作的字符上的操作stringr。我的代码和此操作的结果如下。任何人都知道为什么我在此操作后的每一行中都得到相同的值,以及如何在不使用for循环的情况下达到预期的结果?
我添加nr了作为行号的额外列,然后我愚蠢地group_by编辑了该列和summarised 而不是mutate并实现了我想要的......但我并不为我的代码感到自豪。还有其他想法吗?
样本数据