R:产生NaNs

时间:2015-04-08 13:59:41

标签: r time-series

我在R Studio中有一个时间序列。现在我想计算这个系列的log()。我尝试了以下方法:

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)?非常感谢

2 个答案:

答案 0 :(得分:6)

正如我在评论中所说,要知道哪个观察点生成NaN,您可以使用函数which

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

答案 1 :(得分:3)

使用测试将原始矢量与产生NaN的值进行子集化:

> 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,这是一种不同的数字。