我知道,对于一个列表,使用基本运营商建立索引时,部分匹配完成$和[[.例如:
ll <- list(yy=1)
ll$y
[1] 1
Run Code Online (Sandbox Code Playgroud)
但我仍然是一个R新手,这对我来说是新的,函数参数的部分匹配:
h <- function(xx=2)xx
h(x=2)
[1] 2
Run Code Online (Sandbox Code Playgroud)
我想了解这是如何工作的.它背后的机制是什么?这有副作用吗?我想知道如果给出了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
Run Code Online (Sandbox Code Playgroud)
但为什么R有这样的功能呢?partial unique匹配背后的基本理念是什么?
我遇到了以下问题
vec <- c("a11","b21","c31")
df <- data.frame(a = c(0,0,0), b = c(1,1,1), row.names = vec)
df["a",]
Run Code Online (Sandbox Code Playgroud)
回报
df["a",]
a b
a11 0 1
Run Code Online (Sandbox Code Playgroud)
然而,
"a" %in% vec
Run Code Online (Sandbox Code Playgroud)
和
"a" %in% rownames(df)
Run Code Online (Sandbox Code Playgroud)
两者都返回False
当使用字母后跟行号的数字时,R允许字符串的部分匹配.我已经在R v3.2.2和R v3.2.1上复制了这个.甚至
df[["a",1,exact=T]]
Run Code Online (Sandbox Code Playgroud)
返回0
有什么我可以设置,以便R不允许这种部分匹配?