[英]Apply Function on all rows to get a matrix output in R
嘗試這個:
m <- diag(nrow(df))
s <- rowSums(df)
r <- combn(nrow(df), 2, function(x) c(s[x[1]]-s[x[2]],s[x[2]]-s[x[1]]))
m[lower.tri(m, diag = F)] <- r[1,]
m <- t(m)
m[lower.tri(m, diag = F)] <- r[2,]
diag(m) <- 0
# [,1] [,2] [,3] [,4]
# [1,] 0 -3 -1 -4
# [2,] 3 0 2 -1
# [3,] 1 -2 0 -3
# [4,] 4 1 3 0
如果您堅持使用自己定義的函數f
,請執行以下操作:
m <- diag(nrow(df))
r <- combn(nrow(df), 2, function(x) c(f(df[x[1],],df[x[2],]), f(df[x[2],],df[x[1],])))
m[lower.tri(m, diag = F)] <- r[1,]
m <- t(m)
m[lower.tri(m, diag = F)] <- r[2,]
diag(m) <- 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.