magittr管道未正确传递连接

时间:2017-09-26 12:29:27

标签: r magrittr

我拉入.rda文件并加载数据。它的工作原理如下:

library(magrittr)
conn <- "http://www.mosaic-web.org/go/datasets/DCF/MeasTreatTables.rda" 
  %>% url()
load(conn)

但是当我在整个过程中使用管道时:

"http://www.mosaic-web.org/go/datasets/DCF/MeasTreatTables.rda" %>% 
  url() %>% 
  load()

没有任何内容加载到全局环境中。为什么会这样?

1 个答案:

答案 0 :(得分:2)

这是因为在使用magrittr命令链时,您并未在全球环境中运行。

让我们运行您的命令,但以同样的方式返回环境:

library(magrittr)
rm(list=ls())
parallel_universe <- "http://www.mosaic-web.org/go/datasets/DCF/MeasTreatTables.rda" %>% 
   url() %>%
  {load(.);environment()}

现在让我们探讨这些环境:

ls()
#[1] "parallel_universe"
ls(parallel_universe)
#[1] "Measurements" "Treatments"

我们一直在填补错误的空间。现在让我们再试一次:

rm(list=ls())
"http://www.mosaic-web.org/go/datasets/DCF/MeasTreatTables.rda" %>% 
url() %>% load(globalenv())
ls()
# [1] "Measurements" "Treatments" 

多田

请注意,您无法分配到parent.frame(),因为magrittr是嵌套环境,因此它不起作用,所以如果您真的想在全局环境之外使用它,那么这将有效: / p>

my_env <- environment()
"http://www.mosaic-web.org/go/datasets/DCF/MeasTreatTables.rda" %>% 
url() %>% load(my_env)

另请参阅:Assigning to temp variables inside of `maggritr` command chain