簡體   English   中英

在所有行上應用函數以獲得 R 中的矩陣輸出

[英]Apply Function on all rows to get a matrix output in R

我需要在數據幀的所有行上應用一個函數。 這些函數的參數將是兩個向量,

例如,

f <- function(vec1,vec2)
     { return(sum(vec1) - sum(vec2))
     }

現在我需要將它應用於我的數據幀的所有行,以便我可以填充矩陣中的所有值並使用該矩陣進行分析。

df <- data.frame(A=c(1,2,3,4),B=c(3,4,3,4),C=c(5,6,4,5))

應用此函數應給出以下矩陣

在此處輸入圖片說明

嘗試這個:

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.

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