2011-04-28 49 views
5

我運行到問題關於大人國包的使用 - 設置用法包的 '大人國' 中的R語言

a2 <- as.brob(0.1)^1000, 

A2 = EXP(-2302.6)

a1 <- as.brob(0.1)^800, 

A1後= EXP(-1842.1)

我得到使用總和不同的結果(A1,A2)和總和(A2,A1) - 每次結果等於給定的總和函數的第一個參數。看起來,儘管它應該是這樣的,但是Brobdingang軟件包可能不會超過這個總和?或者,也許我做錯了什麼?

我問這個問題也可以作爲另一個問題,我寫了回信,見here

[編輯:回答包的作者]

喜丹

這絕對是一個錯誤包裹; 感謝您的報告! 不幸的是,糾正它會花費我相當多的時間。

在此期間,請找平時[R成語低於 計算兩個brobs的總和:

> a1 <- as.brob(0.1)^800 
> a2 <- as.brob(0.1)^1000 
> a1+a2 


> a1 <- as.brob(0.1)^800 
> a2 <- as.brob(0.1)^1000 


> a1+a2 
[1] +exp(-1842.1) 
> a2+a1 
[1] +exp(-1842.1) 

> sum(cbrob(a1,a2)) 
[1] +exp(-1842.1) 
> sum(cbrob(a2,a1)) 
[1] +exp(-1842.1) 
> 

回答

2

我可以重現你的問題,用下面的代碼。一個答案可能是+而不是sum補充:另一個辦法是做總和

> library(Brobdingnag) 
> (a1 <- as.brob(0.1)^800) 
[1] +exp(-1842.1) 
> (a2 <- as.brob(0.1)^1000) 
[1] +exp(-2302.6) 
> 
> a1 + a2 
[1] +exp(-1842.1) 
> a2 + a1 
[1] +exp(-1842.1) 
> 
> sum(a1, a2) 
[1] +exp(-1842.1) 
> sum(a2, a1) 
[1] +exp(-2302.6) 
> 
> sum(as.brob(0.1)^c(1000,800)) 
[1] +exp(-1842.1) 
> sum(as.brob(0.1)^c(800,1000)) 
[1] +exp(-1842.1) 

這似乎是你不能使用sum(,)像之前有一個矢量數據。這裏有一些類似的奇怪的結果與更實際的數字

> as.brob(0.1) + as.brob(1)   # OK, gives exp(ln(1.1)) 
[1] +exp(0.09531)  
> as.brob(1) + as.brob(0.1)   # OK, gives exp(ln(1.1)) 
[1] +exp(0.09531) 
> sum(as.brob(c(0.1, 1)))    # OK, gives exp(ln(1.1)) 
[1] +exp(0.09531) 
> sum(as.brob(c(1, 0.1)))    # OK, gives exp(ln(1.1)) 
[1] +exp(0.09531) 
> 
> sum(as.brob(0.1), as.brob(1))  # not OK, gives first term exp(ln(0.1)) 
[1] +exp(-2.3026) 
> sum(as.brob(1), as.brob(0.1))  # not OK, gives first term exp(ln(1)) 
[1] +exp(0) 
+0

奇怪 - 我發送一封電子郵件給包的創建者,讓我們看看他是否回答。使用+符號而不是總和是一個問題,因爲我有一個brobs矩陣,我想總結其行(多次),這意味着我將不得不添加循環的'+'只是爲了得到總和 - 不可怕,但有點醜陋 – dan12345 2011-04-29 15:25:40

+0

@ user206903:矩陣不應該是一個問題。例如'sum(as.brob(0.1)^ c(1000,800))'和'sum(as.brob(0.1)^ c(800,1000))'都給出了相同的結果(我認爲是正確的)。我會在上面添加這個 – Henry 2011-04-29 15:38:40