【发布时间】:2018-01-06 18:58:19
【问题描述】:
我想在magrittr/tidyverse 管道的末尾使用$。 $ 直接在 tidyverse 函数旁边工作,例如 read_csv 和 filter,但是一旦我使用 %>% 创建管道,它就会引发错误。这是一个简单的可重现示例。
# Load libraries and create a dummy data file
library(dplyr)
library(readr)
write_csv(data_frame(x=c(0,1), y=c(0,2)), 'tmp.csv')
# This works
y <- read_csv('tmp.csv')$y
str(y)
# This also works
df_y <- read_csv('tmp.csv')
y <- filter(df_y, y > 0)$y
str(y)
# This does not work
y <- read_csv('tmp.csv') %>% filter(y > 0)$y
我的问题是:
1) 为什么在管道末尾使用 $ 不起作用的基本解释/机制是什么?
2) 什么是我想要完成的最佳实践方式?具体来说,要获得一个向量作为管道的最终结果?
【问题讨论】:
-
与stackoverflow.com/questions/21618423 有一些重叠。它没有解决您的问题 1。但它提供了我在下面提倡的
dplyr::pull()的替代方案。