magrittr管道占位符在算术表达式中无法工作的原因咨询
解决magrittr管道占位符在算术表达式中报错的问题
问题原因
使用%>%时,单个.引用(比如.[])能正常工作,是因为magrittr会自动把左侧对象绑定到.上。但如果用小括号()包裹算术这类复合表达式,小括号会创建独立的执行环境,这个环境里没有管道传递的.对象,因此触发“object '.' not found”错误。
解决方法
方法1:用大括号{}包裹表达式
大括号不会创建独立环境,能正确识别管道传递的.:
c(10,22,35,46) %>% {.[2] - .[1]} # 输出12
方法2:用匿名函数显式接收参数
通过匿名函数直接接收左侧传递的对象,避免依赖.的环境绑定:
c(10,22,35,46) %>% (function(x) x[2] - x[1]) # 输出12
内容的提问来源于stack exchange,提问作者robertspierre
相关产品推荐
相关产品推荐

