ペアワイズ(パラレル)最小値を求める

まず、以下のようなデータフレームを作成しました。

age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
height1=c(71.1,75,77.1,73.2,77.8,73.7,78.9,87.1,86.2,85.8,82.8,83.5)
village=data.frame(age=age,height=height,height1=height1)

今度は、データフレームに4番目の列を作成して、各行ごとに短い人物の高さを取得します。行1 76.1対71.1は71.1を返します。

私はこのコードでこれをやってみました:

village=transform(village, shorter=min(height,height1))

そして私は奇妙な結果を得ました。それは私に両方の絶対列の絶対最小値を与えます:

It gives me the absolute smallest height in BOTH columns

この関数を変更して、行ごとに低い値を与える方法はありますか?

1
追加された 編集された
ビュー: 1

1 答え

min 関数はベクトル全体を調べます。あなたが望んだのは pmin でした:

> village$ageminht <- with(village, pmin(height, height1) )
> village$ageminht
 [1] 71.1 75.0 77.1 73.2 77.8 73.7 78.9 81.1 81.2 81.8 82.8 83.5
12
追加された
ありがとうございました。 'with'関数と 'transform'関数の違いは何ですか?つまり、どちらを使用するのですか?
追加された 著者 AME,
within 関数は、 with よりも transform に似ています。 < - (代入)と結合しない限り、結果は返される環境を提供しますが、永続的な効果はありません。
追加された 著者 42-,
私はまだ with 上で within に多大な価値を見いだしていません。 内で で代入を行う必要があるため、オブジェクト内で within >
追加された 著者 42-,