问:在R dplyr管道中,如何将一些中间输出分配给临时变量以便在管道中进一步使用?
我的方法可行.但它分配到全球框架,这是不可取的.必须有更好的方法,对吗?我认为我的方法涉及评论行将获得预期的结果.没有骰子.困惑为什么不起作用.
df <- data.frame(a = LETTERS[1:3],b=1:3) df %>% filter(b < 3) %>% assign("tmp",.,envir = .GlobalEnv) %>% # works #assign("tmp",.) %>% # doesn't work mutate(b = b*2) %>% bind_rows(tmp) a b 1 A 2 2 B 4 3 A 1 4 B 2
pipeR
是一个扩展管道功能而不添加不同管道的软件包(正如magrittr所做的那样).要分配,您传递一个变量名称,在括号中用〜引用作为管道中的元素:
library(dplyr) library(pipeR) df %>>% filter(b < 3) %>>% (~tmp) %>>% mutate(b = b*2) %>>% bind_rows(tmp) ## a b ## 1 A 2 ## 2 B 4 ## 3 A 1 ## 4 B 2 tmp ## a b ## 1 A 1 ## 2 B 2
虽然语法不是非常具有描述性,但pipeR是very well documented.