簡體   English   中英

將此for循環轉換為Apply函數R

[英]Convert this for loop to an apply function R

我有一個數據向量,如下所示:

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

而且我想對向量中的每對元素應用一個函數,以便它將返回上三角矩陣,如下所示:

mat <- matrix(data = NA, nrow = length(data), ncol = length(data))
for (i in 1:(length(data) - 1)) {
  for (j in (i+1):length(data)) {
    mat[i, j] <- "-"(data[j], data[i])
  }
}

但我想使用apply類型函數而不是for循環來這樣做。

我不確定該怎么做。 有什么建議么?

謝謝!

我們可以使用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 <- matrix(data = NA, nrow = length(data), ncol = length(data))

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM