如何使用带指数的多个嵌套括号?

How to use multiple nested parentheses with exponents?

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

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  ) )

问题在于

-0.3649376^1.5 

被解释为

-(0.3649376^1.5)

没有

(-0.3649376)^1.5

因为指数运算符有更高的优先级。当你取 0.5 指数时,这就像取平方根,而 R 中没有为简单数值向量定义这些指数(除非你想使用虚数)。对于您的数据值,您的计算只是 NaN,因为您的结果不是真实的。您可能想再次检查您的公式,

来自documentation:

Users are sometimes surprised by the value returned, for example why (-8)^(1/3) is NaN. For double inputs, R makes use of IEC 60559 arithmetic on all platforms, together with the C system function pow for the ^ operator. The relevant standards define the result in many corner cases. In particular, the result in the example above is mandated by the C99 standard. On many Unix-alike systems the command man pow gives details of the values in a large number of corner cases.