[英]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.