[英]r - pairwise combinations of rows from table?
假設一個表如下:
X =
col1 col2 col3
row1 "A" "0" "1"
row2 "B" "2" "NA"
row3 "C" "1" "2"
我使用下面的代碼選擇兩行的組合:
pair <- apply(X, 2, combn, m=2)
這將返回以下形式的矩陣:
pair =
[,1] [,2] [,3]
[1,] "A" "0" "1"
[2,] "B" "2" NA
[3,] "A" "0" "1"
[4,] "C" "1" "2"
[5,] "B" "2" NA
[6,] "C" "1" "2"
我希望迭代一對,一次取兩行,即首先分離[1,]和[2,],然后[3,]和[4,]和最后,[5,]和[6,]。 然后將這些行作為參數傳遞給回歸模型,即lm(Y~row [i] * row [j])。
我正在處理一個大型數據集。 任何人都可以建議如何一次迭代兩行矩陣,將這些行分配給變量並作為參數傳遞給函數?
謝謝,S ;-)
沒有必要像這樣乘以矩陣的行,如果你有一個大的數據集,它可能會有問題。 而只是為每個實例選擇相關的行。 但事先創建選擇很方便,或許這樣:
xselect <- combn(1:nrow(X),2)
為了說明您的數據(假設您只使用第2列和第3列):
X <- matrix(c("A", "B", "C", 0,2,1,1,NA,2),3,3)
Y <- rnorm(2, 4, 2)
for (i in 1:ncol(xselect))
{
x1 <- as.numeric(X[xselect[1,i], c(2,3)])
x2 <- as.numeric(X[xselect[2,i], c(2,3)])
print(lm(Y ~ x1 * x2))
}
我不知道你想要什么用線性模型做的,但遍歷X
的時間,一對行,做一個因素對於每一對,然后使用by
fac <- as.factor(sort(rep(1:(nrow(X)/2), 2)))
by(X, fac, FUN)
其中FUN
是你想要在X中的行對上應用的任何函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.