如何将多个嵌套括号与指数一起使用?

Posted

技术标签:

【中文标题】如何将多个嵌套括号与指数一起使用?【英文标题】:How to use multiple nested parentheses with exponents? 【发布时间】:2018-07-16 01:31:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

问题是

-0.3649376^1.5 

被解释为

-(0.3649376^1.5)

不是

(-0.3649376)^1.5

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

【讨论】:

those aren't defined for negative numbers ... 实际上,至少在基本数学理论方面,它们定义为虚数。但是,我似乎也无法使用基本 R 来让它工作。 @TimBiegeleisen 对不起。我应该更精确。是的,负数的根是虚构的。如果你做了as.complex(-0.3649376)^1.5,它会起作用。但是 R 不会在没有显式转换的情况下自动跳转到复数。 是的,这就是问题所在。我回到原来的公式(它是用于计算蒸汽压赤字)我应该有以下形式:((1 - (273.15+temp)/Tc))^1.5【参考方案2】:

来自documentation:

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

【讨论】:

以上是关于如何将多个嵌套括号与指数一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套 Vecs 与 wasm-bindgen 一起使用?

如何将多个 nib 文件与多个数组一起使用?

sass2:

如何将单个小部件与多个提供程序一起使用?

如何将 QVector 与多个对象一起使用

复杂和嵌套的 json 数据集如何与 pyspark 一起使用