我正在试验imputeTS包中的函数。该软件包提供了几个函数来计算单变量时间序列数据中的缺失值。我测试了它们,它们都很棒,除了na_kalman函数。此函数更改原始数字向量。下面是一个例子。
# Load packages
library(imputeTS)
# Set seeds
set.seed(123)
# Generate 10 random number
dat <- rnorm(10)
# Replace the first 10 numbers to be NA
dat[1:5] <- NA
# Check the numbers in dat
dat
[1] NA NA NA NA NA 1.7150650 0.4609162 -1.2650612 -0.6868529
[10] -0.4456620正如您所看到的,我用10个数字创建了一个向量,而前5个是NA。
# Apply the na_kalman function
dat2 <- na_kalman(dat)
# Check the numbers in dat2
dat2
[1] 1.7150650 1.7150650 1.7150650 1.7150650 1.7150650 1.7150650 0.4609162 -1.2650612 -0.6868529
[10] -0.4456620
# Check the numbers in dat again
dat
[1] 1.7150650 1.7150650 1.7150650 1.7150650 1.7150650 1.7150650 0.4609162 -1.2650612 -0.6868529
[10] -0.4456620dat2似乎显示了na_kalman函数,成功地计算了NA。然而,最初的载体dat也被改变了。这是我想避免的行为。我想知道是否有办法要求na_kalman不要改变原来的向量。
Note
rnorm(1000) )时,我注意到dat中的所有缺失值都将更改为原始数据中的第一个不丢失的值。似乎dat不仅仅是na_kalman函数之后的dat2的一个副本。imputeTS包的其他函数,如na_interpolation、na_locf、na_mean。他们没有这种行为。在运行这些函数之后,dat仍然是相同的向量。发布于 2017-04-18 22:46:45
这里是imputeTS包的作者。谢谢你的电子邮件。
这确实没有feature...it是一个相当小的错误。我直接修好了这个窃听器。
更新:新版本修复也在CRAN现在。修正了3.0版。如果您遇到这个错误,只需更新imputeTS包即可。
不幸的是,我在CRAN上上传了一个新的包版本,就在你给我写信之前几个小时。否则,它将已经包含在2.1更新中。我将在周末前用修复程序进行更新。
如果同时需要一个固定版本,则可以直接从github安装新版本:
library(devtools)
install_github("SteffenMoritz/imputeTS")对于那些感兴趣的人来说,问题是:
这是我通过Rcpp调用的C++代码中的一个问题。我忘了做一个物体的深拷贝。
https://stackoverflow.com/questions/43478244
复制相似问题