【发布时间】:2012-12-18 16:48:38
【问题描述】:
我知道对于列表,在使用基本运算符 $ 和 [[ 进行索引时会完成部分匹配。例如:
ll <- list(yy=1)
ll$y
[1] 1
但我仍然是 R 新手,这对我来说是新的,函数参数的部分匹配:
h <- function(xx=2)xx
h(x=2)
[1] 2
我想了解它是如何工作的。其背后的机制是什么?这有副作用吗?我想了解有人如何测试是否给出了 xx 参数?
在 Andrie 评论后编辑:
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匹配背后的基本思想是什么?
【问题讨论】:
-
@Andrie 感谢您的链接!即使它没有解释为什么 R 具有此功能,我也会接受它作为答案?它看起来像是其他功能的副作用,因为有多个部分匹配是错误的。
-
这是对“为什么”的猜测。 R 被设计为一种命令行统计语言。一种快速简便的数据分析方法。部分匹配使命令行分析更容易(但编程更麻烦)。
-
使用
[[的索引默认不会作为参数exact = TRUE执行部分匹配。