ud.convert()

时间:2019-03-15 15:28:02

标签: c r units-of-measurement

这是一个data.frame df,我要将value列转换为 g / g (克/克)。前两个条目位于 ug / mg (微克/毫克),最后两个条目是 ng / mg (毫微克/毫克)。但是,ud.convert()函数似乎只考虑它遇到的第一个单位条目(即ug / mg),然后转换该单位的所有value条目,而忽略了行#3​​中单位的变化。 / p>

require(udunits2)

df = data.frame(
  value = rep(1,4),
  unit = c(rep('ug/mg', 2), rep('ng/mg', 2)),
  stringsAsFactors = FALSE
)
df$value2 = ud.convert(df$value, df$unit, 'g/g')
df
#   value  unit value2
# 1     1 ug/mg  0.001
# 2     1 ug/mg  0.001
# 3     1 ng/mg  0.001
# 4     1 ng/mg  0.001

我能想到的所有其他R函数都会为每一行执行这样的操作。考虑使用paste()substr()

paste(df$value, df$unit, 'g/g', sep = '---')
substr(df$unit,1,2)

我认为这是ud.convert()的非常不符合R的行为,应予以更改或至少给出警告。还是我忽略了什么?转换在C函数R_ut_convert中进行。不幸的是,我不知道有C提出更改;)

0 个答案:

没有答案