由于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))
}
答案 0 :(得分:2)
您可能想要查看BB包,特别是BBsolve()函数。 BBsolve做了Newton-Raphson对你喂它的等式的反演。碰巧:-),我编写并发布了一个函数“ktsolve”,它允许你输入一组方程和一些变量子集,它将返回其他变量的值。 (它的名字是为了纪念商业TK!Solver包装)。如果你想尝试一下,你可以在http://witthoft.com/ktsolve.R(或http://witthoft.com/rtools.html获取它,然后点击那里的链接。)