我遇到以下問題。我創建了這個簡單的函數來刪除矢量(xts)中的最後2個非NA值。它完美的作品。R函數適用於單個列,但不適用於
library(xts)
last2na <- function(x) { x[which(is.na(lag(x,-2)))] <- NA; return(x) }
但是,當我嘗試應用於矩陣(xts)列時,它對矩陣本身沒有任何影響。但是,如果我將這個函數單獨應用到每一列,那麼它確實有效。
例如,採取以下矩陣:
d <- xts(matrix(1:14, ncol=2), Sys.Date()+1:7)
d[5:7,1] <- NA
d[7,2] <- NA
如果我申請的功能,每一列,例如第二:
last2na(d[,2])
我得到正確的結果(如更換最後2 NA爲非NA值)。但如果我使用apply:
apply(d, 2, last2na)
然後沒有任何反應。我返回原始矩陣d,沒有任何變化。我不明白問題是什麼。
有人可以幫我這個嗎?非常感謝
謝謝。這工作完美。你說得對,問題在於通過刪除xts結構來應用xts對象的工作(因此,延遲不起作用)。再次感謝 – john 2014-12-17 11:02:45