Благодаря оценке аргументов функции R можно задавать непротиворечивый набор входных параметров и автоматически рассчитывать остальные параметры.
Рассмотрим следующую функцию, связывающую концентрацию, массу, объем и молярнуювес для разбавления в химии,
concentration <- function(c = m / (M*V), m = c*M*V, V = m / (M*c), M = 417.84){
cat(c("c=", c*1e6, "micro.mol/L\n",
"m=", m*1e3, "mg\n",
"M=", M, "g/mol\n",
"V=", V*1e3, "mL\n"))
## mol/L, g, g/mol, L
invisible(list(c=c, m=m, M=M, V=V))
}
Есть ли способ указать только одно из уравнений и дать R вычислить другие по инверсии?Я понимаю, что это ограничивается простыми линейными отношениями, поскольку инверсию обычно нельзя выразить аналитически.
concentration <- function(c = m / (M*V), m, V, M = 417.84){
## { magic.incantation }
## mol/L, g, g/mol, L
invisible(list(c=c, m=m, M=M, V=V))
}