Подтвердить что ты не робот

Преобразование единиц в R

Я хотел бы преобразовать из имперских единиц в метрику и наоборот в R. Как мне это сделать?

Если нет текущего способа сделать это, как я могу создать пакет, который будет?

4b9b3361

Ответ 1

Я знаю, что это очень поздно, но пакет measurements имеет функцию conv_unit(), которая может быть тем, что вы ищете. Вы вводите имперское значение, которое у вас есть, какой блок вы конвертируете (например, "ft" ) и то, что вы хотите преобразовать (например, "км" ). Он имеет различные размеры (не только длину).

Ответ 2

Характер единиц может влиять на присутствие или отсутствие. В общем, я думаю, к сожалению, что @gsk3 верен. В пакетах "Hmisc", "gdata" и "marelac" есть некоторая функция:

Настройка атрибута единиц (для объектов, не только времени): http://finzi.psych.upenn.edu/R/library/Hmisc/html/units.html

Медицина: http://finzi.psych.upenn.edu/R/library/gdata/html/ConvertMedUnits.html

'marelac' Index (в основном специализированный для океанографии) http://finzi.psych.upenn.edu/R/library/marelac/html/00Index.html

Температура: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_T.html

барометрического: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_p.html

Пакет "диэлектрик" был упомянут @Brian Diggs в ответе на аналогичный вопрос: Ссылка на страницу справки констант в "диэлектрике"

Я думаю, что они приведут примеры этого, а функция package.skeleton должна помочь в механизме создания пакета. Я думаю, что пакет будет приятным дополнением.

Обновление. Пакет 'udunits2' был упомянут Gabor Grothendieck в аналогичном вопросе, который был исправлен 23 июля 2012 года. Похоже, требуется установка отдельного пакета с одним и тем же ОС. Без такой установки вы получите довольно бесполезное сообщение об ошибке:

> ud.convert(1, "miles", "km")  
Error in ud.convert(x, "miles", "km") : 
  Units miles and km are not convertible

Ответ 3

В пакете grid есть функции unit() и convertUnit() для указания разных единиц измерения длины и размера. Это может сделать то, что вы хотите, или дать вам место для начала, если нет.

Ответ 4

Пакет udunits2 делает именно это. Он обертывает мощную библиотеку UDUNITS:

udunits2::ud.convert(1, "mi", "km")
## [1] 1.609344

Кроме того, пакет units (работа в процессе) направлен на предоставление безопасной системы для арифметики с единицами

with(ud_units, 1 * mi + 2 * km)
## 2.242742 mi
with(ud_units, 100 * km / (2 * h))
## 50 km/h
with(ud_units, 1 * mi + 2 * lb)
## Error: cannot convert lb into mi

Ответ 5

Сегодня существует новый пакет R-пакетов, который был создан на пакете udunits2 R, который доступен некоторое время назад.

Посмотрите на: https://cran.r-project.org/web/packages/units/vignettes/units.html#setting-units-unit-conversion

library(units)
(spd1 = 1:5 * with(ud_units, m/s))
##Units: m/s
##[1] 1 2 3 4 5

(spd2 = 1:5 * with(ud_units, km/h))
#Units: km/h
#[1] 1 2 3 4 5

spd1 + spd2                   # automatic conversion
#Units: m/s
#[1] 1.277778 2.555556 3.833333 5.111111 6.388889

spd1 * spd2                   # unit derivation
#Units: km*m/h/s
#[1]  1  4  9 16 25

spd1 * 10 * with(ud_units, s) # unit simplification
#Units: m
#[1] 10 20 30 40 50

spd1 + 10 * with(ud_units, s) # error checking
#Error in `units<-.units`(`*tmp*`, value = list(numerator = "m", denominator = "s")) : 
cannot convert s into m/s