目前,我正在努力解決與使用data.table獲取組內所有可能的排列相關的問題。在data.table中提取組內所有可能的配對
爲了解釋我的問題,讓我給你看一個例子。
x <- c(1, 1, 1, 2, 2)
y <- c('red', 'blue', 'black', 'orange', 'red')
dt1 <- as.data.table(cbind(x,y))
dt1
x y
1: 1 red
2: 1 blue
3: 1 black
4: 2 orange
5: 2 red
現在我想看看組(x)中的每個可能的顏色對(y)。所以,我理想中的結果將是....
x y1 y2
1 black blue
1 black red
1 blue black
1 blue red
1 red black
1 red blue
2 orange red
2 red orange
要找到一個解決方案,我沒有Google上搜尋它,我發現一個函數,排列,這正是我期待的,但我覺得很難擠它進入data.table框架。
y <- c('red', 'blue', 'black')
permutations(n=3, r=2, v=y, repeats.allowed=F)
[,1] [,2]
[1,] "black" "blue"
[2,] "black" "red"
[3,] "blue" "black"
[4,] "blue" "red"
[5,] "red" "black"
[6,] "red" "blue"
所以我試着做以下,但顯然有錯誤..
dt1[, .(j = lapply(.SD, permutations, n=.N, r=2, v=y, repeats.allowed=F)), by=x]
這什麼建議嗎? 我會很感激。
也許'dt1 [,CJ(y,y),by = x] [V1!= V2]' – Henrik