2017-09-26 14 views
2

私は.rdaファイルを読み込み、データを読み込んでいます。magittrパイプが接続を正しく通過しない

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() 

何も地球環境にロードされません。なぜこれはそうですか?

答えて

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が営巣環境ですので、あなたが本当に地球環境のこの外側を使用する場合、これは動作します:

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

+0

なるほど!したがって、並列環境で名前を評価すると(例えば 'eval(代理(Treatments)、envir = parallel_universe)')、その名前のデータフレームを取得します。ニース!大変ありがとう、@Moody_Mudskipper。 –

+0

ちょうど 'eval(Treatments、envir = parallel_universe)'がする:)または 'get(" Treatments "、envir = parallel_universe) –

+0

実際には、最初のものは動作しません。オブジェクト 'Treatments'は見つかりません。 –

関連する問題