R:使用写成字符串的等式作为实际等式

时间:2017-08-31 02:41:54

标签: r formula equation

是否有人知道如何使用以R为实际方程或公式的字符串给出的方程?

我有一个带有异速生长方程的数据库(可用于计算/估算树木的生物量),以及有关它们所开发的位置和物种的信息。我还有另一个观察到物种的大型观测数据集;所以我遍历所有这些物种及其位置,找到每个物种的异速生长方程式,方程式可能非常不同[这只是为了表明这不是一次性的练习,所以我不能使用非常具体的方法]。然后我想用我观察到的数据集(用树的直径和高度等东西)来计算生物量 - 但我不知道如何实际使用异速生长方程数据库中的表达式。请参阅下面的一个非常简短的例子。

X   Z   Equation                                    Genus       Species
DBH NA  0.1731*X^(2.0296)                           All         All
DBH NA  0.1027*X^(2.4798)                           All         All
DBH H   (-4.58643+1.90532*log10(X)+1.0646*log10(Z)) Tectona     grandis
DBH H   (-4.58643+1.90532*log10(X)+1.0646*log10(Z)) Tectona     grandis
DBH NA  0.000189*X^(2.262)                          Dalbergia   melanoxylon
DBH H   0.0763*X^(2.2046)*Z^(0.4918)                All         All

所以,让我说我的观察数据中有Tectona grandis,我希望能够提取-4.58643+1.90532*log10(X)+1.0646*log10(Z)并将其与我观察到的X(直径)和{{1}一起使用}(身高)。

我需要某种"泛型"因为我正在处理很多物种和很多不同的方程式。我知道如何选择实际的等式,但后来我把它作为一个因素 - 我该如何操作呢?我可以吗?

1 个答案:

答案 0 :(得分:2)

您可以同时使用evalparse将字符转换为表达式,然后对其进行评估。我应该注意,这不是一个好习惯。但是,这是一个您可以尝试的示例:

#Your equation
x = "-4.58643+1.90532*log10(X)+1.0646*log10(Z)"

#Values you want to plug into x
X = 2
Z = 5

#Evaluate x
eval(parse(text = x))
#[1] -3.268748