Ответ 1
На странице справки на ?min
:
pmax и pmin принимают один или несколько векторов (или матриц) в качестве аргументов и возвращают один вектор, дающий "параллельные максимумы (или минимумы) векторов.
С другой стороны:
max и min возвращают максимум или минимум всех значений, присутствующих в их аргументах
Поэтому вы хотите использовать pmin
здесь. С dplyr, один из вариантов - как указано выше - выглядит следующим образом:
df %>% mutate(v3 = (v1 != 0) * v1/pmin(v1,v2))
Хорошим побочным эффектом здесь является то, что вы можете избежать использования ifelse
и просто mulitply с логическим вектором (TRUE/FALSE, который затем преобразуется в 1/0).