下面是一個例子:差異從RcppArmadillo
require(Rcpp)
require(RcppArmadillo)
require(zoo)
require(repmis)
myData <- source_DropboxData(file = "example.csv",
key = "cbrmkkbssu5bn96", sep = ",", header = TRUE)
dolm = function(x) coef(fastLmPure(as.matrix(x[,2]), x[,1]))
myCoef = rollapply(myData, 260, dolm, by.column = FALSE)
summary(myCoef) # 80923 NA's
dolm2 = function(x) coef(fastLm(x[,1] ~ x[,2] + 0, data = as.data.frame(x)))
myCoef2 = rollapply(myData, 260, dolm2, by.column = FALSE)
summary(myCoef2) # 0 NA's
在上述第一種方法中例如用fastLmPure
產生的NA在輸出,同時用fastLm
秒方法沒有。
這裏是鏈接到寫入中的R fastLm
& fastLmPure
功能:
https://github.com/RcppCore/RcppArmadillo/blob/master/R/fastLm.R
而這裏是鏈接到底層fastLm
功能用C++編寫:
https://github.com/RcppCore/RcppArmadillo/blob/master/src/fastLm.cpp
從這些鏈接和RcppArmadillo的文檔,對我來說不明顯是什麼導致輸出差異TS?爲什麼在第二次輸出中沒有新手?最重要的問題是,例程/部分代碼在第二種方法中阻止了NAs的出現,以及它如何實現?
我會邀請你[閱讀源代碼](https://github.com/RcppCore/RcppArmadillo/blob/master/R/fastLm.R)。這真的不是那麼複雜... –
@DirkEddelbuettel謝謝,我發現了這個問題。 PS。但是給出問題中已經提供的鏈接是非常有幫助的;) –