Пошук попарних (паралельних) мінімумів

По-перше, я створив кадр даних, як показано нижче:

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))

І я отримав дивний результат. Це дає мені абсолютне найменше значення в BOTH стовпцях:

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
додано
Дякую. У чому полягає різниця між функцією "з" і функцією "перетворення", тобто коли ви використовуєте одну проти іншої?
додано Автор AME, джерело
Функція within більше нагадує transform , ніж з . with надає середовище, з якого можна повертати результати, але якщо воно не пов'язане з <- (призначенням), воно не матиме постійного ефекту.
додано Автор 42-, джерело
Я ще не бачив багато значення для в межах над з . within не робить фактичних змін у об'єкті, він тільки повертає значення, яке є великим, як весь кадр даних, тому вам все одно потрібно зробити присвоєння з <-
додано Автор 42-, джерело