R 从执行顺序操作的向量创建三角形矩阵
我一直在努力解决以下问题 假设我有以下向量:R 从执行顺序操作的向量创建三角形矩阵,r,for-loop,matrix,vector,conditional,R,For Loop,Matrix,Vector,Conditional,我一直在努力解决以下问题 假设我有以下向量: aux1您可以尝试以下方法(在@thela的慷慨帮助下) res0],-1),`-`) is.na(res)使用sapply和ifelse: sapply(head(vv[vv>0],-1),function(y)ifelse(vv-y>0,vv-y,NA)) 在正值上循环(还应删除最后一个元素),然后从原始向量中提取每个值。我使用ifelse替换负值 # [,1] [,2] [,3] [,4] [,5] # [1,]
aux1您可以尝试以下方法(在@thela的慷慨帮助下)
res0],-1),`-`)
is.na(res)使用sapply
和ifelse
:
sapply(head(vv[vv>0],-1),function(y)ifelse(vv-y>0,vv-y,NA))
在正值上循环(还应删除最后一个元素),然后从原始向量中提取每个值。我使用ifelse
替换负值
# [,1] [,2] [,3] [,4] [,5]
# [1,] NA NA NA NA NA
# [2,] NA NA NA NA NA
# [3,] NA NA NA NA NA
# [4,] NA NA NA NA NA
# [5,] 1 NA NA NA NA
# [6,] NA NA NA NA NA
# [7,] 3 2 NA NA NA
# [8,] NA NA NA NA NA
# [9,] NA NA NA NA NA
# [10,] 6 5 3 NA NA
# [11,] 7 6 4 1 NA
# [12,] 8 7 5 2 1
你已经很好的答案的变化:out 0],-1),`-`);replace(out,out@thelatemail)非常好。我做了相应的修改。在如何避免在所有组合上运行它的问题上,我伤了脑筋。
res <- outer(aux1, head(aux1[aux1 > 0], -1), `-`)
is.na(res) <- res <= 0
# [,1] [,2] [,3] [,4] [,5]
# [1,] NA NA NA NA NA
# [2,] NA NA NA NA NA
# [3,] NA NA NA NA NA
# [4,] NA NA NA NA NA
# [5,] 1 NA NA NA NA
# [6,] NA NA NA NA NA
# [7,] 3 2 NA NA NA
# [8,] NA NA NA NA NA
# [9,] NA NA NA NA NA
# [10,] 6 5 3 NA NA
# [11,] 7 6 4 1 NA
# [12,] 8 7 5 2 1
sapply(head(vv[vv>0],-1),function(y)ifelse(vv-y>0,vv-y,NA))
# [,1] [,2] [,3] [,4] [,5]
# [1,] NA NA NA NA NA
# [2,] NA NA NA NA NA
# [3,] NA NA NA NA NA
# [4,] NA NA NA NA NA
# [5,] 1 NA NA NA NA
# [6,] NA NA NA NA NA
# [7,] 3 2 NA NA NA
# [8,] NA NA NA NA NA
# [9,] NA NA NA NA NA
# [10,] 6 5 3 NA NA
# [11,] 7 6 4 1 NA
# [12,] 8 7 5 2 1