如何使用带指数的多个嵌套括号?
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,因为您的结果不是真实的。您可能想再次检查您的公式,
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.
我需要在我的数据框中创建一个新变量,它是一个带有许多嵌套括号的方程式的输出。这个等式的一部分是下面最后一行的形式
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,因为您的结果不是真实的。您可能想再次检查您的公式,
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.