这是一个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提出更改;)