相关疑难解决方法(0)

函数参数的部分匹配

我知道,对于一个列表,使用基本运营商建立索引时,部分匹配完成$[[.例如:

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匹配背后的基本理念是什么?

r semantics

21
推荐指数
1
解决办法
3699
查看次数

防止部分参数匹配

我有一个R功能:

myFunc <- function(x, base='') {
}
Run Code Online (Sandbox Code Playgroud)

我现在正在扩展该函数,允许一组任意额外的参数:

myFunc <- function(x, base='', ...) {
}
Run Code Online (Sandbox Code Playgroud)

如何禁用参数的部分参数匹配base我不能把它放在...之前,base=''因为我想保持函数的向后兼容性(它通常被称为myFunction('somevalue', 'someothervalue')没有base明确命名).

通过调用我的函数来刺激我:

myFunc(x, b='foo')
Run Code Online (Sandbox Code Playgroud)

希望这意味着base='', b='foo',但R使用部分匹配并假设base='foo'.

是否有一些代码,我可以插入在myFunc确定了传递什么参数名,只匹配确切的 "基地"的base参数,否则在分组它的一部分...

r

16
推荐指数
1
解决办法
1013
查看次数

可以使用部分名称访问R列表成员吗?这是一个功能吗?

考虑这个R代码

> l = list(key = 1)
> l$k
[1] 1
> l$ke
[1] 1
> l[['k']]
NULL
> names(l)
[1] "key"
Run Code Online (Sandbox Code Playgroud)

这是否意味着您可以使用$其部分名称访问列表成员?在一次令人沮丧的寻找虫子之后我发现这一点时,我无法相信自己的眼睛.

这是R列表的一个特征吗?它有名字吗?有可能把它关掉吗?当你像Python字典一样使用它时,这会引起明显的麻烦.

r

7
推荐指数
2
解决办法
194
查看次数

标签 统计

r ×3

semantics ×1