R语言【base】——do.call():根据名称或函数以及要传递给它的参数列表构造并执行函数调用

Package base version 4.2.0


Parameters

R 复制代码
do.call(what, args, quote = FALSE, envir = parent.frame())

参数【what】:命名要调用的函数的函数或非空字符串。

参数【args】:函数调用的参数列表。参数【args】的 names 属性为参数提供名称。

参数【quote】:指示是否引用参数的逻辑值。

参数【envir】:用于评估调用的环境。如果调用的内容是字符串,参数是符号或带引号的表达式,这将非常有用。


Detail

如果参数【quote】为 FALSE(默认值),那么将对参数进行评估(在调用环境中,而不是在 envir 中)。如果参数【quote】为 TRUE,则每个参数都会被加引号,这样参数评估的效果就是移除引号,在构造调用时保留未评估的原始参数。

对于使用 do.call求值的函数,某些函数(如 substitute)的行为与解释器求值的行为不同。确切的语义目前尚未定义,可能会有变化。


Value

函数调用(已评估)的结果。


Warning

这不应被用来试图规避对使用 .Internal 和其他非 API 调用的限制。


Example

R 复制代码
do.call("complex", list(imaginary = 1:3))

## if we already have a list (e.g., a data frame)
## we need c() to add further arguments
tmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))
do.call("paste", c(tmp, sep = ""))

do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)

## examples of where objects will be found.
A <- 2
f <- function(x) print(x^2)
env <- new.env()
assign("A", 10, envir = env)
assign("f", f, envir = env)
f <- function(x) print(x)
f(A)                                      # 2
do.call("f", list(A))                     # 2
do.call("f", list(A), envir = env)        # 4
do.call( f,  list(A), envir = env)        # 2
do.call("f", list(quote(A)), envir = env) # 100
do.call( f,  list(quote(A)), envir = env) # 10
do.call("f", list(as.name("A")), envir = env) # 100

eval(call("f", A))                      # 2
eval(call("f", quote(A)))               # 2
eval(call("f", A), envir = env)         # 4
eval(call("f", quote(A)), envir = env)  # 100
相关推荐
Alice-YUE27 分钟前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
云泽80832 分钟前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
froginwe111 小时前
DOM 加载函数
开发语言
Hello eveybody1 小时前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站1 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust1 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
莎士比亚的文学花园2 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
图码2 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
U盘失踪了2 小时前
python curl转python脚本
开发语言·chrome·python
charlie1145141912 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c