这是一个相当简单的问题。出于某种原因,当使用数据帧进行管道传输时,pmin()函数不起作用。见下文:
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 :(得分:0)
出错的地方是管道运算符将数据帧作为第一个参数传递。所以你试图运行pmin(select(mtcars,am, gear), am, gear)
。
正如Nate的评论所暗示的,mtcars%>%with(pmin(am, gear))
可以做你想要的。
此外,对Marco的评论略有修改。 mtcars%>%transmute(pmin(am,gear))%>%pull