簡體   English   中英

在所有可能的列對上執行功能

[英]Perform function on all possible pairs of columns

我正在使用包括為學生(行)分配分數的評估者(列)的數據。 數據的結構類似於此:

rater.1 <-rep(seq(1:4),each=6)
rater.2 <- rep(seq(2:5), each=6)
rater.3 <- rep(seq(3:6), each=6)
rater.4 <- rep(seq(1:4), each=6)
rater.5 <- rep(seq(2:5), each=6)
rater.6 <- rep(seq(3:6), each=6)

ratings <- cbind(rater.1, rater.2, rater.3, rater.4, rater.5, rater.6)

我想應用一個函數來基於每個可能的評估者對來計算值。 因此將針對(rater.1,rater.2),(rater.1,rater.3),(rater.1,rater.4),(rater.1,rater5),(rater.1, rater.6),(rater.2,rater.3),(rater.2,rater.4)等...

該對中評估者的順序無關緊要。

這是一個使用函數的簡化示例,該函數計算一對中觀察到的評級之和:

pair.sum <- function(rater.i, rater.j){

 pairsum.ij = sum(rater.1) + sum(rater.j)

 return(pairsum.ij)  
}

我想創建一個結果向量,以某種方式標記成對的評分者的名字。 我知道可能需要某種循環,但是我不確定如何構造它以獲得所有可能的對的結果。

實際數據包括更多的列和行,並且功能更加復雜。 但我想從一個簡單的示例開始,看看是否可以弄清楚如何將其概括為實際數據。 我是編程新手,感謝您的幫助!

我認為這應該工作:

N <- ncol(ratings)
myfun <- function(i,j,data) {sum(data[,i],data[,j])}
vals <- Vectorize(myfun, vectorize.args=list("i","j"))
outer(1:N,1:N,vals,data=ratings)

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  120  120  120  120  120  120
[2,]  120  120  120  120  120  120
[3,]  120  120  120  120  120  120
[4,]  120  120  120  120  120  120
[5,]  120  120  120  120  120  120
[6,]  120  120  120  120  120  120

暫無
暫無

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

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