【发布时间】:2021-07-12 20:10:00
【问题描述】:
我希望将 expression 对象传递给函数,以便其 substitute 给出相同的结果 - 并且似乎无法正确处理。
f1 <- function(x) {
print(substitute(x)) # a + 1
print(class(substitute(x))) # "call"
f2(x)
}
f2 <- function(y) {
print(substitute(y)) # x
print(class(substitute(y))) # "name"
}
f1(a+1)
这里发生了什么?为什么substitute 的类和值存在差异?
有没有办法在 R 中实现“完美转发”(即按原样将表达式传递给函数)?
【问题讨论】:
-
也许这有帮助:stackoverflow.com/questions/52876164/…>
-
1. 由于惰性求值,变量 x 被传递到
f2函数中,因此具有f2打印x2) 不,由于惰性,您不能按原样进行转发对承诺的评价。请注意,只有在需要时才会评估变量
标签: r