Rの話です。
Problem
同じ次元の2つのvectorを適当に用意します。
> n <- round(rnorm(8)) # 正規分布 > n [1] 1 -1 0 1 2 1 -1 1 > u <- round(runif(8), 3) # 一様分布 > u [1] 0.292 0.774 0.411 0.009 0.634 0.378 0.985 0.468
これら2つのvectorの各成分を比較して、大きい方の値をとるような3つ目のvectorを作りたくなりました。
つまり、各 に対し となるようなvector を作りたくなりました。
> max(n, u) [1] 2
うまくいきませんでした。1
Solution
調べたら、pmax()とかいうのを使えばうまくいくことがわかりました。
> pmax(n, u) [1] 1.000 0.774 0.411 1.000 2.000 1.000 0.985 1.000
このpmax()を使えば、vectorに対し正部分をとるような操作、すなわち、各成分の値が0以上ならその値を、0未満なら0をとるような操作も施せました。
> n [1] 1 -1 0 1 2 1 -1 1 > pmax(n, 0) [1] 1 0 0 1 2 1 0 1 > max(n, 0) [1] 2
もちろんmin()やpmin()についても同様のことが言えます。