如何在R中对指数使用多个嵌套括号?

时间:2018-07-16 01:31:06

标签: r parentheses exponent

我需要在数据框中创建一个新变量,该变量是带有许多嵌套括号的方程式的输出。该方程的一部分以下面最后一行的形式

temp=36

Tc = 647.097

( ( 1-273.15+temp )/Tc )^1.5

其中temp将是一个变量,而Tc将是一个常数。但是,当我运行代码时,结果始终为“ NA”。

但是,如果我将代码分解成我知道结果的数字

( 1-273.15+temp )/Tc

然后像这样添加指数

-0.3649376^1.5

然后代码按预期工作。

为什么R无法正确输出计算((1-273.15 + temp)/ Tc)^ 1.5?

更重要的是,如何在保留常量和变量对对象的使用的同时,让R获得((1-273.15 + temp)/ Tc)^ 1.5的结果?

我需要解决这个问题,因为完整的方程式甚至更糟,我上面描述的问题嵌套在其中:

e_sat_test <-Pc ^((Tc /(273.15 + temp))*(a1 *((1-273.15 + temp)/ Tc)+ a2 *((1-273.15 + temp)/ Tc)^ 1.5 + a3 *((1-273.15 + temp)/ Tc)^ 3 + a4 *((1-273.15 + temp)/ Tc)^ 3.5 + a5 *((1-273.15 + temp)/ Tc)^ 4 + a6 * ((1-273.15 + temp)/ Tc)^ 7.5))

2 个答案:

答案 0 :(得分:2)

问题是

-0.3649376^1.5 

被解释为

-(0.3649376^1.5)

不是

(-0.3649376)^1.5

因为指数运算符具有更高的优先级。当您对.5指数取某物时,就像取平方根,并且这些并未为R中的简单数值向量定义(除非您想使用虚数)。因为您的结果不是真实的,所以您对数据值的计算只是NaN。您可能要再次检查公式,

答案 1 :(得分:0)

documentation:

  

有时,用户会对返回的值感到惊讶,例如为什么(-8)^(1/3)是NaN。对于双输入,R在所有平台上均使用IEC 60559算法,并为^运算符使用C系统功能。相关标准定义了许多极端情况下的结果。特别地,以上示例中的结果由C99标准强制执行。在许多类似Unix的系统上,man pow命令会在大量极端情况下提供值的详细信息。