42-*_*42- 25
单位的性质可能会影响是否存在.总的来说,我认为,不幸的是,@ 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'指数(主要专门用于海洋学) 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在回答类似问题时提到了"电介质"封装: 链接'constants'帮助页面封装'电介质'
我认为这些将提供这样做的示例,该函数package.skeleton
应该有助于创建包的机制.我认为该套餐将是一个受欢迎的补充.
更新:Gabor Grothendieck在2012年7月23日发布的类似问题中提到了'udunits2'软件包.它似乎要求安装一个独立的OS专用软件包.如果没有这样的安装,您将收到一条相当无用的错误消息:
> ud.convert(1, "miles", "km")
Error in ud.convert(x, "miles", "km") :
Units miles and km are not convertible
Run Code Online (Sandbox Code Playgroud)
Cep*_*irk 12
我知道这已经很晚了,但是这个软件包measurements
有一个conv_unit()
可能正是你正在寻找的功能.您输入您拥有的英制值,您要转换的单位(例如'ft')和您想要转换的单位(例如'km').它有各种不同的尺寸(不仅仅是长度).
网格包中有unit()
和convertUnit()
函数用于指定不同的长度和尺寸单位.这可能会做你想要的,或者如果没有,你就可以开始.
今天有一个名为unit的“新” 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
Run Code Online (Sandbox Code Playgroud)
该udunits2
软件包就是这样做的。它包装了功能强大的UDUNITS库:
udunits2::ud.convert(1, "mi", "km")
## [1] 1.609344
Run Code Online (Sandbox Code Playgroud)
最重要的是,该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
Run Code Online (Sandbox Code Playgroud)