在下面,有没有一种方法可以在expr
中同时引用expr1
和expr2
?
expr1 %>% {
expr2 %>% expr
}
字符串
例如,这不起作用
mtcars %>% {
mtcars[1:3] %>% mutate(disp2 = disp + hp)
}
型
另一个例子,有没有一种方法可以使输出为32 11 32 3
,即使第一个.
指向上一级LHS?
mtcars %>% {
mtcars[1:3] %>% {cat(dim(.),dim(.))}
}
型
只是好奇!
谢谢你,
更新-
感谢您的意见和建议,@GregorThomas和@维克托!我的意图不是特别针对这两个例子,而是如何编写代码w/o打破管道,例如,我不想写这个使用x
的expr
中的上层LHS
expr1 %>% {
x <- .
expr2 %>% expr
}
型
1条答案
按热度按时间f8rj6qna1#
有一个办法:
字符串
这将打印
32 11 32 3
environment()
返回当前环境,parent.env
返回调用堆栈中上一级的环境,然后您可以使用美元运算符访问该环境以获取点的值。要使第一个示例正常工作,请使用bang-bang运算符强制进行早期评估:
型
我发现查看调用堆栈很有帮助,可以通过运行
型
产出:
型