在dplyr中,对象如何通过%>%管道传递给函数?

时间:2018-10-29 21:09:54

标签: r dplyr

library(tidyverse)
set.seed(55)

a <- c(100 %>% rnorm(10, mean = .))
b <- c(rnorm(100, 10, mean = 100))

identical(a, b)
[1] FALSE

我正在查看a变量。我对'管道'的理解是,它将对象传递到'管道'的左侧作为以下函数的第一个参数,并且它还将对象的任何(。)填充到管道左侧。 / p>

如果是这样,我的b变量将等同于我的a变量,但事实并非如此。为什么不将100变量的rnorm()作为a中的第一个参数传递?

1 个答案:

答案 0 :(得分:3)

重置种子并将其设置为真正相同的功能会产生相同的结果。

library(tidyverse)

set.seed(55)
a <- c(100 %>% rnorm(10, mean = 100))

set.seed(55)
b <- c(rnorm(100, 10, mean = 100))

identical(a, b)
[1] TRUE

magrittr包中的点决定了从管道传递来的值的放置位置,它不会重复。因此,您的第一个函数仅生成10个示例,而不是100个。