找到成对(并行)最小值

首先,我创建了一个如下数据框:

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)

现在,我想在数据框中创建第四列,该列采用每行中较短人物的高度,例如第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 答案

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,
函数中的更像是 transform 而不是带的with 提供了一个可以返回结果的环境,但除非它与 < - (赋值)相结合,否则它将没有永久效果。
额外 作者 42-,
我还没有看到相比有很多价值。 中的不会对对象进行实际更改,它只返回与整个数据帧一样大的值,因此您仍需要使用 < -
额外 作者 42-,