23

これはかなり単純な質問です。しかし、google/stackexchange ごとに答えを見つけることができず、magrittr のドキュメントを見ました。ベクトルを作成するために %>% で接続された一連の関数の結果をどのようにフィードしますか?

ほとんどの人が行っているのを見たのは次のとおりです。

a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()

しかし、結果をパイプチェーンしてオブジェクト、おそらくエイリアスやsthなどにフィードできるソリューションもありますか?

data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()

これは、すべてのコードを同じロジックで結果を「パイプの下に」送るのに役立ちます。

4

5 に答える 5

27

これを試して:

data.frame( x = c(1:3), y = (4:6)) %>% sum -> a
于 2014-09-22T14:16:22.237 に答える
5

<<-次の演算子を使用することもできます。

data.frame( x = c(1:3), y = (4:6)) %>%
  sum() %>%
  `<<-`(a,.)

編集: John Paul の提案が最も安全だと思います。部分的な結果のさまざまな割り当てを行うチェーンを続けることができます。例えば:

data.frame( x = c(1:3), y = (4:6)) %>%  
  sum %>%  
  assign(x="a",value=., pos=1)  %>% 
  exp %>%
  assign(x="b",value=., pos=1) %>% 
  sqrt %>%
  assign(x="c", value=., pos=1)

aこれにより、 、bおよびが正しく作成されますc

于 2014-09-22T14:13:44.747 に答える
4

pipeR を使用する%>>%と、これは非常に簡単になります。

library(pipeR)
data.frame( x = c(1:3), y = (4:6)) %>>%
  sum %>>%
  (~ a)

pipeR のチュートリアルが役立つかもしれません: http://renkun.me/pipeR-tutorial/ 割り当て: http://renkun.me/pipeR-tutorial/Pipe-operator/Pipe-with-assignment.html

于 2014-09-26T12:08:00.897 に答える