magrittr 管道未正确传递连接

magittr pipe does not correctly pass a connection

我正在拉入 .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()

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

这是因为在使用 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"

我们一直在填充错误 space。现在让我们再试一次:

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

多田

注意你不能赋值给parent.frame(),它不会起作用,因为magrittr是嵌套环境,所以如果你真的想在全局环境之外使用它,它会起作用:

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