2016-03-15 60 views
1

計算股票價格時間序列的收益時,它會在某些日期返回Inf值。該系列有一個zooreg類,我試圖用NAs替換那些Inf替換zooreg對象的元素

對於重複性,假設我有以下對象:

a <- structure(c(1, 2, 3, 2, 4, Inf, Inf, 3, 4), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("a", "b", "c")), index = structure(c(5113, 5144, 5173), class = "Date"), 
    frequency = 1, class = c("zooreg", "zoo")) 

我嘗試以下

a[[a=Inf]]<-NA 

,但它給了一個錯誤:

Error in a[[a = Inf]] <- NA : attempt to select more than one element

如何要挾InfNA在這種情況下?

回答

1

試試這個:

a[] <- replace(coredata(a), !is.finite(a), NA) 

,並提供:

> a 
      a b c 
1984-01-01 1 2 NA 
1984-02-01 2 4 3 
1984-03-01 3 NA 4 
+0

是否有使用'特殊原因is.finite',而不是'is.infinite'!? – athraa

+1

兩者都可以,但!is.finite也會取代NaN。 –