【发布时间】:2014-12-13 18:50:43
【问题描述】:
我有以下问题。我创建了这个简单的函数来从向量 (xts) 中删除最后 2 个非 NA 值。它完美地工作。
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(d, 2, last2na)
然后什么都没有发生。我返回原始矩阵 d 没有任何变化。我不明白问题是什么。
有人可以帮我解决这个问题吗?非常感谢
【问题讨论】: