【发布时间】:2015-08-31 12:38:14
【问题描述】:
我一直在尝试解决以下问题。
假设我有以下向量:
aux1<-c(0,0,0,4,5,0,7,0,0,10,11,12) 其中的数字代表行号。
我想计算这个向量的不同元素之间的距离,固定第一个分量,然后是第二个分量,依此类推。
如果元素为零,我不想计算它,所以我放了一个 NA 代替。我想要的输出应该是这样的:
NA NA NA NA NA
NA NA NA NA NA
NA NA NA NA NA
NA NA NA NA NA
1 NA NA NA NA
NA NA NA NA NA
3 2 NA NA NA
NA NA NA NA NA
NA NA NA NA NA
6 5 3 NA NA
7 6 4 1
8 7 5 2 1
在第一列中,我有第一个不为零的元素与所有其他元素之间的区别,即 Matrix[5,1]=5-4=1 和 Matrix[12,1]=12-4= 8.此外,Matrix[7,2]=7-5=2,其中 5 是向量中不等于 0 的第二个元素。请注意 Matrix[10,3]=10-7=3,其中 7 是第三个不等于 0 的元素,但在我的向量中是第七个元素。
我尝试循环执行此操作。我当前的代码如下所示:
M=matrix(nrow=N-1, ncol=N-1))
for (i in 1:N-1){
for (j in 1:N-1){
if(j<=i)
next
else
if(aux1[j]>0)
M[j,i]=aux1[j]-aux1[i]
else
M[j,i]=0
}
}
不幸的是。我无法解决我的问题。任何帮助将不胜感激。
【问题讨论】:
标签: r for-loop matrix vector conditional