R:在dplyr :: mutate()中使用min()

时间:2015-01-21 15:29:05

标签: r min dplyr

require(plyr)
require(dplyr)    
set.seed(8)
    df <- 
      data.frame(
        v1 = runif(10, -1,1),
        v2 = runif(10, -1,1))

问题: 如何将min()函数中的正确值作为mutate()的一部分 - 我基本上希望将v3指定为v1除以{{1}的最小值}和v1。 这不起作用:

v2

我想我错过了一些非常简单的事情。

1 个答案:

答案 0 :(得分:22)

来自?min的帮助页面:

  

pmax和pmin将一个或多个向量(或矩阵)作为参数和   返回单个向量,给出“并行”最大值(或最小值)   载体

另一方面:

  

max和min返回所有值的最大值或最小值   他们的论点

所以你想在这里使用pmin。使用dplyr,一个选项 - 如上所述 - 就像这样:

df %>% mutate(v3 = (v1 != 0) * v1/pmin(v1,v2))

这里很好的副作用是你可以避免使用ifelse并且只是多次使用逻辑向量(TRUE / FALSE然后转换为1/0)。