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
我想我错过了一些非常简单的事情。
答案 0 :(得分:22)
来自?min
的帮助页面:
pmax和pmin将一个或多个向量(或矩阵)作为参数和 返回单个向量,给出“并行”最大值(或最小值) 载体
另一方面:
max和min返回所有值的最大值或最小值 他们的论点
所以你想在这里使用pmin
。使用dplyr,一个选项 - 如上所述 - 就像这样:
df %>% mutate(v3 = (v1 != 0) * v1/pmin(v1,v2))
这里很好的副作用是你可以避免使用ifelse
并且只是多次使用逻辑向量(TRUE / FALSE然后转换为1/0)。