簡體   English   中英

R的奇怪行為

[英]Strange behavior of R

因此,我在R中有以下代碼:

y
a <- -0.1    
test <- (1/((y+as.numeric(!y))*(a-1)))  
test  
test^a  
-0.9090909^a 

給我輸出:

> y  
 [1] 0.00000000 0.06024096 0.00000000 0.01098901 0.00000000 0.00000000
 [7] 0.01829268 0.00000000 0.06976744 0.00000000 0.04380665 0.01351351
[13] 0.00000000 0.00000000 0.00000000 0.00000000 0.00310559 0.00000000
[19] 0.00000000 0.00000000 0.09957447 0.00000000 0.03738318 0.00000000
> a <- -0.1
> test <- (1/((y+as.numeric(!y))*(a-1)))
> test
 [1]   -0.9090909  -15.0909091   -0.9090909  -82.7272727   -0.9090909
 [6]   -0.9090909  -49.6969697   -0.9090909  -13.0303030   -0.9090909
[11]  -20.7523511  -67.2727273   -0.9090909   -0.9090909   -0.9090909
[16]   -0.9090909 -292.7272727   -0.9090909   -0.9090909   -0.9090909
[21]   -9.1297591   -0.9090909  -24.3181818   -0.9090909  

> test^a  
 [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[17] NaN NaN NaN NaN NaN NaN NaN NaN  

> -0.9090909^a  
[1] -1.009577

我不明白為什么在對冪a進行測試時它會給我NaN,很明顯,我可以簡單地從測試中復制一個值並將其提高到冪a,這是可行的。 使用test [1] ^ a也不起作用。

-0.9090909 ^ a-(0.9090909 ^ a) 注意括號。

但是,您的test包含負值,並且您不能取負數的根。 嘗試(-0.9090909) ^ a進行驗證:

> (-0.9090909) ^ -0.1
[1] NaN

您正在嘗試取負數的根。 如果您想進行復數運算,則需要轉換為復數

as.complex(test) ^ a
# [1] 0.9601644-0.3119763i 0.7249946-0.2355650i 0.9601644-0.3119763i
# [4] 0.6115633-0.1987090i 0.9601644-0.3119763i 0.9601644-0.3119763i
# [7] 0.6435367-0.2090978i 0.9601644-0.3119763i 0.7357171-0.2390490i
#[10] 0.9601644-0.3119763i 0.7022627-0.2281790i 0.6243418-0.2028609i
#[13] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.9601644-0.3119763i
#[16] 0.9601644-0.3119763i 0.5389643-0.1751201i 0.9601644-0.3119763i
#[19] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.7623605-0.2477059i
#[22] 0.9601644-0.3119763i 0.6912151-0.2245894i 0.9601644-0.3119763i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM