gpt4 book ai didi

r - 与 R 中的 max.distance 相关的意外 agrep() 结果

转载 作者:行者123 更新时间:2023-12-04 10:36:56 26 4
gpt4 key购买 nike

编辑:这个错误是在 32 位版本的 R 中发现的,已在 R 版本 2.9.2 中得到修复。


这是@leoniedu 今天发给我的推特,我没有他的答案,所以我想我会把它贴在这里。

我已经阅读了 agrep()(模糊字符串匹配)的文档,看来我并不完全理解 max.distance 参数。这是一个例子:

pattern <- "Staatssekretar im Bundeskanzleramt"
x <- "Bundeskanzleramt"
agrep(pattern,x,max.distance=18)
agrep(pattern,x,max.distance=19)

这完全符合我的预期。字符串之间有 18 个字符不同,所以我希望这是匹配的阈值。这是让我感到困惑的地方:

agrep(pattern,x,max.distance=30) 
agrep(pattern,x,max.distance=31)
agrep(pattern,x,max.distance=32)
agrep(pattern,x,max.distance=33)

为什么 30 和 33 匹配,而不是 31 和 32?为了节省你一些计数,

> nchar("Staatssekretar im Bundeskanzleramt")
[1] 34
> nchar("Bundeskanzleramt")
[1] 16

最佳答案

我不久前将其发布在 R 列表中,并在 R-bugs-list 中报告为错误。我没有得到有用的回复,所以我发推特看看这个错误是否可以重现,或者我只是遗漏了什么。 JD Long 能够重现它并在此贴出问题。

请注意,至少在 R 中,agrep 是用词不当,因为它匹配正则表达式,而 grep 代表“全局搜索正则表达式并打印”。比目标向量长的模式应该没有问题。 (我想!)

在我的 Linux 服务器上,一切都很好,但在我的 Mac 和 Windows 机器上却不是这样。

麦克: session 信息()R 版本 2.9.1 (2009-06-26)i386-苹果-darwin8.11.1语言环境:en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

agrep(模式,x,最大距离=30)[1] 1

agrep(pattern,x,max.distance=31) integer(0) agrep(pattern,x,max.distance=32) integer(0) agrep(pattern,x,max.distance=33) [1] 1

Linux:R 版本 2.9.1 (2009-06-26)x86_64-未知-linux-gnu

语言环境:LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME= C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C

agrep(pattern,x,max.distance=30) [1] 1 agrep(pattern,x,max.distance=31) [1] 1 agrep(pattern,x,max.distance=32) [1] 1 agrep(pattern,x,max.distance=33) [1] 1

关于r - 与 R 中的 max.distance 相关的意外 agrep() 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com