R:使用以字符串形式编写的方程作为实际方程

R:使用以字符串形式编写的方程作为实际方程,r,formula,equation,R,Formula,Equation,有人知道用字符串形式给出的方程作为R中的实际方程或公式的方法吗 我有一个数据库,里面有异速生长方程(你可以用它来计算/估计树木的生物量),还有关于树木生长地点和种类的信息。我还有另一个大型观测数据集,包含观测到的物种;因此,我对所有这些物种及其位置进行循环,以找到每个物种的异速生长方程,方程可能会非常不同[这只是为了表明这不是一次性练习,因此我无法使用非常具体的方法]。然后我想用我观察到的数据集(包括树木的直径和高度)来计算生物量——但我不知道如何实际使用异速生长方程数据库中的表达式。下面是一个

有人知道用字符串形式给出的方程作为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
假设我的观测数据中有一个巨行星,我希望能够提取
-4.58643+1.90532*log10(X)+1.0646*log10(Z)
,并将其与观测到的
X
(直径)和
Z
(高度)一起使用


我需要某种“通用”的解决方案,因为我要处理很多物种和很多不同的方程。我知道如何选择实际方程式,但我把它作为一个因素——我如何操作它?我可以吗

您可以同时使用
eval
parse
将字符转换为表达式,然后对其求值。我应该指出,这被认为不是一个好的做法。但是,以下是一个您可以尝试的示例:

#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

实际的
X
Z
数值是否在同一数据帧中?还是你在别的地方查?如果您在示例中包含数值
X
Z
,则会有所帮助。是的,X和Z是作为数值记录在观测数据(与此数据库分离)中的树木直径和高度。我不认为这是一个问题,我实际提取这些并使用它们在一个等式测试:
x=“-4.58643+1.90532*log10(x)+1.0646*log10(Z)”;X=2;Z=5;eval(parse(text=x))
Awesome,很好用!你能把它作为一个答案添加进来,这样我就可以投票表决并作为答案解决它吗?我不知道有那么容易!谢谢出于兴趣-为什么不认为这是一种好的做法?@Geraldine,关于这一点,我们有几个问题要问。这里有一个: