我可以在不调用数据集两次的情况下将数据集管道化为两个函数吗?
Can I pipe a dataset into two functions without calling the dataset twice?
在 R
中,假设我有一个数据集,我想 运行 函数 str()
和 summary()
。
在基地R
,我会这样做。
summary(data)
str(data)
如果我使用 magrittr
或整个 tidyverse
套件,我更喜欢这样做。
data %>% str()
data %>% summary()
但是,我不得不说 data
两次,我不喜欢这样。当然现在,
data %>%
str() %>%
summary()
不起作用,因为管道不是这样工作的。
有没有一种方法可以使用一些运算符或函数,这样我只需调用 data
一次?
您可以使用 magrittr
"Tee pipe"
library(magrittr)
mtcars %T>%
str %>%
summary
如果您对 "advanced" 管道感兴趣,请查看文档。 magrittr
vignette 显示了 %T>%
、%$%
、%<>%
的示例以及专用管道的其他便利功能。
如果您希望保留结果:
library(tidyverse)
mtcars %>%
map(lst(nrow, ncol), ~.(.y), .)
#> $nrow
#> [1] 32
#>
#> $ncol
#> [1] 11
在 R
中,假设我有一个数据集,我想 运行 函数 str()
和 summary()
。
在基地R
,我会这样做。
summary(data)
str(data)
如果我使用 magrittr
或整个 tidyverse
套件,我更喜欢这样做。
data %>% str()
data %>% summary()
但是,我不得不说 data
两次,我不喜欢这样。当然现在,
data %>%
str() %>%
summary()
不起作用,因为管道不是这样工作的。
有没有一种方法可以使用一些运算符或函数,这样我只需调用 data
一次?
您可以使用 magrittr
"Tee pipe"
library(magrittr)
mtcars %T>%
str %>%
summary
如果您对 "advanced" 管道感兴趣,请查看文档。 magrittr
vignette 显示了 %T>%
、%$%
、%<>%
的示例以及专用管道的其他便利功能。
如果您希望保留结果:
library(tidyverse)
mtcars %>%
map(lst(nrow, ncol), ~.(.y), .)
#> $nrow
#> [1] 32
#>
#> $ncol
#> [1] 11