如果x <- 1:5是以下情况:
sum(x^2)
Run Code Online (Sandbox Code Playgroud)
返回55,正确答案。但是,如果使用管道运算符:
x %>% sum(.^2)
Run Code Online (Sandbox Code Playgroud)
然后它返回70(这恰好是的总和x^2和的总和x)。
尽管有一些解决方法,但是我主要想知道发生了什么。
有趣的问题!
发生的情况是管道自动将其参数作为第一个参数传递给以下表达式,因此x %>% sum(.^2)等效于sum(x, x^2)。
我更用于与工作%>%在一个数据帧/ tidyverse范围内,其中第一个参数到每个tidyverse动词(例如mutate,filter,select)本身是一个数据帧:
data.frame(x) %>% dplyr::mutate(y=sum(x^2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |