gpt4 book ai didi

r - 为什么R使用部分匹配?

转载 作者:行者123 更新时间:2023-12-03 00:23:02 24 4
gpt4 key购买 nike

我知道对于列表,使用基本运算符$[[进行索引时会完成部分匹配。例如:

ll <- list(yy=1)
ll$y
[1] 1


但是我仍然是R新手,这对我来说是新的,函数参数的部分匹配:

h <- function(xx=2)xx
h(x=2)
[1] 2


我想了解这是如何工作的。其背后的机制是什么?这有副作用吗?我想了解某人如何测试是否给出了xx参数?

在安德里评论后编辑:

在内部,R使用 pmatch算法来匹配参数,这里是一个如何工作的示例:

 pmatch("me",   c("mean", "median", "mode")) # error multiple partial matches
[1] NA
> pmatch("mo", c("mean", "median", "mode")) # mo match mode match here
[1] 3


但是为什么R具有这种功能? partial unique匹配背后的基本思想是什么?

最佳答案

存在部分匹配,以免您键入长参数名称。这样做的危险是,函数以后可能会获得其他参数,这些参数与部分匹配冲突。这意味着它仅适用于交互使用–如果您编写的代码会长时间停留(例如,放入包装中),则应始终编写完整的参数名称。另一个问题是,通过缩写参数名称,可以使代码的可读性降低。

两种常见的良好用途是:


使用len(或length.out)功能使用seq代替seq.int
使用all函数使用all.names代替ls


比较:

seq.int(0, 1, len = 11) 
seq.int(0, 1, length.out = 11)

ls(all = TRUE)
ls(all.names = TRUE)


在这两种情况下,使用缩短的参数名称就几乎易于阅读代码,并且函数足够老且稳定,以至于不太可能添加另一个名称冲突的参数。

节省类型的一个更好的解决方案是使用自动完成的变量名和参数名,而不是使用缩写名。 R GUI和RStudio使用TAB键支持此功能,而Architect使用CTRL + Space支持此功能。

关于r - 为什么R使用部分匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153904/

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