【问题标题】:pmin() with dplyr in R在 R 中使用 dplyr 的 pmin()
【发布时间】:2018-04-17 18:09:01
【问题描述】:

这是一个相当简单的问题。由于某种原因,当使用数据帧进行管道传输时,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)

我错过了什么?我们将不胜感激您的建议。

【问题讨论】:

  • 来自文档:“将一个或多个 vectors 作为参数”
  • 试试这个:mtcars %>% mutate(pmin = pmin(am,gear))
  • 或使用with()作为管道助手,mtcars %>% with(pmin(am, gear))
  • @rf7 如果我的帖子回答了您的问题,请您将其标记为答案。

标签: r dplyr


【解决方案1】:

您出错的地方是管道运算符将数据帧作为第一个参数传递。所以你试图运行pmin(select(mtcars,am, gear), am, gear)

正如 Nate 的评论所暗示的,mtcars%>%with(pmin(am, gear)) 做你想做的事。

另外,对 Marco 的评论稍作修改。 mtcars%>%transmute(pmin(am,gear))%>%pull

【讨论】:

  • 感谢@Moody_Mudskipper。从我的答案中删除它们。多任务处理时会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 2022-06-29
  • 1970-01-01
  • 2021-12-27
  • 2020-12-25
  • 1970-01-01
  • 2018-05-07
相关资源
最近更新 更多