2017-11-05 15 views
3

これはかなり簡単な質問です。何らかの理由でpmin()関数がデータフレームでパイプされても機能しません。下記を参照してください:pmin()とdplyr in R

library(dplyr) 
data(mtcars) 
pmin(mtcars$am, mtcars$gear) 
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 
mtcars %>% pmin(am, gear) 
Error in pmin(., am, gear): object 'am' not found 
Traceback: 

1. mtcars %>% select(am, gear) %>% pmin(am, gear) 
2. withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 
3. eval(quote(`_fseq`(`_lhs`)), env, env) 
4. eval(quote(`_fseq`(`_lhs`)), env, env) 
5. `_fseq`(`_lhs`) 
6. freduce(value, `_function_list`) 
7. withVisible(function_list[[k]](value)) 
8. function_list[[k]](value) 
9. pmin(., am, gear) 

私が逃しているものは何ですか?あなたのアドバイスは高く評価されます。

+0

ドキュメントから: "引数として1つ以上の**ベクトル**をとります" – PoGibas

+3

これを試してください: 'mtcars%>%mutate(pmin = pmin(am、gear))' –

+1

または 'with()'をパイプラインヘルパー、 'mtcars%>%with(pmin(am、gear))' – Nate

答えて

0

ここで間違っているのは、パイプ演算子が最初の引数としてデータフレームを渡すことです。だからあなたはpmin(select(mtcars,am, gear), am, gear)を実行しようとしています。

ネイトのコメントからもわかるように、mtcars%>%with(pmin(am, gear))はあなたが望むことをします。

また、Marcoのコメントを少し修正しました。 mtcars%>%transmute(pmin(am,gear))%>%pull

+0

'。$'のための必要はありません –

+1

@Moody_Mudskipperに感謝します。私の答えからそれらを削除しました。それはあなたがマルチタスクをしたときに起こります。 –