我正在使用来自@Konrad Rudolph的一个函数,但将其名称从%>%
更改为:=
,并且在相同的调用中获得不同的结果。
`%>%` = function (lhs, rhs) {
subst = call('substitute', substitute(rhs), list(. = lhs))
eval.parent(eval(subst))
}
`:=` <- `%>%`
1 %>% .+2 %>% .*3
#[1] 7
1 := .+2 := .*3
#[1] 3
或者使用不同的函数。
`%>%` <- function(lhs, rhs) {
assign(".", lhs, envir=parent.frame())
eval(substitute(rhs), parent.frame())
}
`:=` <- `%>%`
1 %>% .+2 %>% .*3
#[1] 7
1 := .+2 := .*3
#[1] 9
为什么我使用名为
:=
的函数时会得到其他结果?
:=
<-%>%
如何不完全替代data.table::``:=``
函数的任何行为? - Carl Witthoftdata.table
包定义了自己的:=
运算符,不在全局范围内。由于它们使用非标准评估,它们可以在特殊环境中评估表达式,以便永远不会使用全局:=
。 - MrFlick