假设我有以下向量:
tst <- seq(1, 100, 1)
我想制作一个新的向量,它具有该向量中每个元素的所有负差值,但只有0和0之间的差异。 -8。我可以这样做:
m <- matrix(NA, length(tst), length(tst))
for(i in 1:length(tst)) {
for(j in 1:length(tst)) {
m[i,j] <- tst[i] - tst[j]
m[m==0] <- NA
m[m > 8] <- NA
m[m < -8] <- NA }}
m <- c(m)
问题是我的数据太大(tst长度大到〜650,000)来制作这些矩阵,所以我可以生成我的向量m的唯一方法就是包含相关的差异(在-8和8之间) - n.b.向量m将包含每个差异的正值和负值。因此将具有零均值并且将是对称直方图。
所以我需要这样的东西:
for(i in 1:length(tst)) {
for(j in 1:length(tst)) {
while(tst[i] - tst[i:length(tst)]) {
m <- tst[i]-tst[i:length(tst)]; if(tst[i]-tst[1:length(tst)] < -8; break)
}}}
谢谢,如果你能提供帮助!