_require(plyr)
require(dplyr)
set.seed(8)
df <-
data.frame(
v1 = runif(10, -1,1),
v2 = runif(10, -1,1))
_
問題:min()
-の一部としてmutate()
関数に正しい値を取得するにはどうすればよいですか?基本的に、_v3
_ as _v1
_をで割って割り当てたいと思います_v1
_と_v2
_の最小値。これは機能しません:
_ df <-
df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0))
_
私は本当に単純なものが欠けていると思います。
?min
のヘルプページから:
pmaxとpminは、1つ以上のベクトル(または行列)を引数として取り、ベクトルの「並列」最大値(または最小値)を与える単一のベクトルを返します。
一方:
maxとminは、引数に存在するすべての値の最大値または最小値を返します
したがって、ここではpmin
を使用します。 dplyrの場合、1つのオプション(上記でコメントしたとおり)は次のようになります。
df %>% mutate(v3 = (v1 != 0) * v1/pmin(v1,v2))
ここでの優れた副作用は、ifelse
の使用を回避し、論理ベクトル(TRUE/FALSEは1/0に変換される)を複数使用できることです。