help(spline)
和help(na.spline)
无法帮助我理解为什么我会收到此错误,并且网上没有任何内容可以直接解决此问题。
我有一个我用这两个命令生成的矩阵:
RatioTable <- ddply(Key, c('Name', 'Position'), function(x) c(AvgRatio = mean(x$RatioMeanBid)))
RatioMatrix <- daply(RatioTable, .(Name, Position), function(x) x$AvgRatio)
> RatioMatrix
Position
Name 1 2 3 4 5
a 0.4 0.3 0.2 0.2 NA
b 0.6 0.7 NA NA 0.5
c NA 0.7 NA NA NA
d 0.5 0.4 0.3 0.3 0.2
e NA NA NA NA NA
> str(RatioMatrix)
num [1:5, 1:5] 0.4 0.6 NA 0.5 NA ...
- attr(*, "dimnames")=List of 2
..$ Name : chr [1:8305] "a" "b" "c" "d" ...
..$ Position: chr [1:10] "1" "2" "3" "4" ...
如果我然后在RatioMatrix
上执行以下插值样条命令,则它可以工作:
d0 <- as.Date("2000-01-01")
RatioMatrix2 <- exp(na.spline(zoo(t(log(RatioMatrix)), d0 + seq_len(ncol(RatioMatrix))),
method = "natural", na.rm = FALSE))
但是,如果我对RatioMatrix
进行任何更改或添加,例如截断或调整第1列中的值(使它们大于第2列中的值),则插值样条线命令会抛出错误:
RatioMatrix <- daply(RatioTable, .(Name, Position), function(x) x$AvgRatio)
Pos1Greater <- data.frame(RatioMatrix[,1] >= RatioMatrix[,2])
Pos2Greater <- data.frame(RatioMatrix[,1] < RatioMatrix[,2])
Adj=(Pos1Greater*RatioMatrix[,1]) + (Pos2Greater*(RatioMatrix[,2]+0.05))
RatioMatrix[,1] = t(Adj)
d0 <- as.Date("2000-01-01")
RatioMatrix2 <- exp(na.spline(zoo(t(log(RatioMatrix)), d0 + seq_len(ncol(RatioMatrix))),
method = "natural", na.rm = FALSE))
Error in splinefun(x[!na], y[!na], ...) : zero non-NA points
我按照建议尝试调试(splinefun),但仍然没有看到NA来自哪里。有任何想法吗? 感谢您对此进行调查。