2017-11-05 4 views
3

Dies ist eine ziemlich einfache Frage. Aus irgendeinem Grund funktioniert die Funktion pmin() nicht, wenn sie mit einem Datenrahmen verbunden ist. Siehe unten:pmin() mit 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) 

Was ich vermisse? Ihr Rat wird geschätzt.

+0

Aus der Dokumentation: "nimmt einen oder mehrere ** Vektoren ** als Argumente" – PoGibas

+3

Versuchen Sie dies: 'mtcars%>% muate (pmin = pmin (am, Zahnrad))' –

+1

oder verwenden 'mit()' als Ein Pipelinehelfer, 'mtcars%>% mit (pmin (am, Zahnrad))' – Nate

Antwort

0

Wenn Sie falsch liegen, geht der Pipe Operator den Datenrahmen als erstes Argument durch. Also versuchen Sie pmin(select(mtcars,am, gear), am, gear) zu laufen.

Wie Nates Kommentar sagt, mtcars%>%with(pmin(am, gear)) macht was Sie wollen.

Auch eine kleine Änderung an Marcos Kommentar. mtcars%>%transmute(pmin(am,gear))%>%pull

+0

keine Notwendigkeit für '. $' –

+1

danke @Moody_Mudskipper. Entfernte sie von meiner Antwort. Das passiert beim Multitasking. –