将此for循环转换为apply函数R

将此for循环转换为apply函数R,r,for-loop,mapply,R,For Loop,Mapply,我有如下数据向量: data <- c(1, 3, 4, 7) 数据我们可以使用combn mat[lower.tri(mat, diag=FALSE)] <- combn(data, 2, FUN= function(x) x[2]-x[1]) t(mat) # [,1] [,2] [,3] [,4] #[1,] NA 2 3 6 #[2,] NA NA 1 4 #[3,]

我有如下数据向量:

data <- c(1, 3, 4, 7)

数据我们可以使用
combn

mat[lower.tri(mat, diag=FALSE)] <- combn(data, 2,
                            FUN= function(x) x[2]-x[1])
t(mat)
#      [,1] [,2] [,3] [,4]
#[1,]   NA    2    3    6
#[2,]   NA   NA    1    4
#[3,]   NA   NA   NA    3
#[4,]   NA   NA   NA   NA

mat[lower.tri(mat,diag=FALSE)]我们可以使用
combn

mat[lower.tri(mat, diag=FALSE)] <- combn(data, 2,
                            FUN= function(x) x[2]-x[1])
t(mat)
#      [,1] [,2] [,3] [,4]
#[1,]   NA    2    3    6
#[2,]   NA   NA    1    4
#[3,]   NA   NA   NA    3
#[4,]   NA   NA   NA   NA

mat[lower.tri(mat,diag=FALSE)]使用
outer

t(outer(data,data,"-"))*
    NA^lower.tri(matrix(0,length(data),length(data)),diag=TRUE)
#     [,1] [,2] [,3] [,4]
#[1,]   NA    2    3    6
#[2,]   NA   NA    1    4
#[3,]   NA   NA   NA    3
#[4,]   NA   NA   NA   NA

使用
外部

t(outer(data,data,"-"))*
    NA^lower.tri(matrix(0,length(data),length(data)),diag=TRUE)
#     [,1] [,2] [,3] [,4]
#[1,]   NA    2    3    6
#[2,]   NA   NA    1    4
#[3,]   NA   NA   NA    3
#[4,]   NA   NA   NA   NA

@尼古拉谢谢你的评论。看起来现在已经修好了。@nicola谢谢你的评论。看起来现在已经修好了。