问题标签 [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
-12
bur also+6.000
或-5,0
and onother ,例如3.14
, -6,26
but 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,因为它是最有效的。
基准
以下是适用于更大数据集(df
93 个句子和dict
14K 单词)的建议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
编辑了该列和summarise
d 而不是mutate
并实现了我想要的......但我并不为我的代码感到自豪。还有其他想法吗?
样本数据