【发布时间】:2014-11-20 00:27:04
【问题描述】:
我正在尝试用 NA 替换向量中总和为零的所有元素组。 每组的大小为 3。例如:
a = c(0,0,0,0,2,3,1,0,2,0,0,0,0,1,2,0,0,0)
应该是:
c(NA,NA,NA,0,2,3,1,0,2,NA,NA,NA,0,1,2,NA,NA,NA)
到目前为止,我已经设法通过以下方式找到总和为零的组:
b = which(tapply(a,rep(1:(length(a)/3),each=3),sum) == 0)
产生c(1,4,6)
然后我通过b <- b*3-2 计算向量中组的起始索引。
可能有一种更优雅的方式,但这是我迄今为止缝合的方式。
现在我被困在“扩展”起始索引的向量上,以生成要替换的元素序列。例如,如果向量b 现在包含c(1,10,16),我将需要一个序列c(1,2,3,10,11,12,16,17,18),它是要被NA 替换的元素的索引。
如果您对没有for 循环的解决方案有任何想法,或者对整个问题有更简单/优雅的解决方案,我将不胜感激。谢谢。
马吕斯
【问题讨论】: