2015-04-08 381 views
1

我在R Studio中有時間系列。現在我想計算這個系列的log()。我試過如下:R:生產的NaNs

i <- (x-y) 
ii <- log(i) 

但後來我得到如下:Warning message: In log(i): NaNs produced 要檢查這個我用:table(is.nan(ii))這給了我下面的輸出:

FALSE TRUE 
2480  1 

所以,我認爲,有1 NaN在我的時間系列中。我的問題是:我可以使用什麼樣的代碼,R表明了我對NaN產生了哪些觀察? 這裏是一個小數據示例:i <- c(9,8,4,5,7,1,6,-1,8,4) 順便說一句我如何在stackoverflow中輸入數學公式,例如log(x)?非常感謝

+0

你不能取負號的日誌 – Dason

+2

'which'可能是你正在尋找的函數:'which(is.nan(log(i)))#8' – Cath

回答

5

正如我在我的評論說,知道哪個觀測產生的NaN,您可以使用功能which

i <- c(9,8,4,5,7,1,6,-1,8,4) 
which(is.nan(log(i))) # 8 
+0

請注意這裏打印的'8'告訴你這是'i'的第8個元素,而不是'log(8)'是'NaN'。 – Spacedman

+0

@Spacedman,是的,我很清楚這一點! ;-)我認爲我的回答很清楚,但你認爲我需要更清楚一點嗎?或者,如果有人誤解了你的評論,也許沒問題。 – Cath

3

使用試驗與生產楠值子集原來的載體:

> i <- c(9,8,4,5,-7,1,6,-1,8,4,Inf,-Inf,NA) 
> i[which(is.nan(log(i)))] 
[1] -7 -1 -Inf 
Warning message: 
In log(i) : NaNs produced 

這裏您會看到-7,-1和-Inf產生的NaN

請注意,log(NA)不是NaN,其NA,這是一種不同種類的非數字性。