使用sum
和求和两个do.call
向量将是
sum(1,2)
do.call("sum", list(1,2))
Run Code Online (Sandbox Code Playgroud)
sum
使用双冒号运算符 ( )指定函数base::sum
在第一种情况下可以工作,但在这种do.call
情况下会失败。
base::sum(1,2)
do.call("base::sum", list(1,2))
> Error in `base::sum`(1, 2) : could not find function "base::sum"
Run Code Online (Sandbox Code Playgroud)
do.call
使用双冒号进行工作?根据文档,what
argdo.call
将采取either a function or a non-empty character string naming the function to be called.
如果您尝试实现不带引号的双冒号,它会起作用:
> do.call(base::sum, list(1,2))
[1] 3
Run Code Online (Sandbox Code Playgroud)
sum
因此,虽然package 中有一个名为函数的函数base
,但您无法通过指定 package 来命名该函数。相反,只需删除引号即可。