簡體   English   中英

r - 來自表的行的成對組合?

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

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