Вот пример:
Матрица типа
[,1] [,2] [1,] 1 4 [2,] 2 3 [3,] 3 2 [4,] 4 1 [5,] 1 4 [6,] 2 3 [7,] 3 2 [8,] 4 1
И я хочу получить несколько уровней вроде
(1,4) (2,3) (3,2) (4,1)
Есть ли какая-либо функция, доступная в R?
Вы можете сгенерировать свой коэффициент напрямую с помощью функции interaction, например:
interaction
R> d <- matrix(1:10, ncol=2) R> d [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10
А потом:
R> v <- interaction(d[,1],d[,2], drop=TRUE) R> v [1] 1.6 2.7 3.8 4.9 5.10 Levels: 1.6 2.7 3.8 4.9 5.10 R> class(v) [1] "factor"
В качестве альтернативы можно использовать factor() напрямую:
factor()
> d <- rbind(c(1,3),c(2,3),c(3,2),c(4,1),c(1,3)) > factor(d[,1]):factor(d[,2]) [1] 1:3 2:3 3:2 4:1 1:3 Levels: 1:1 1:2 1:3 2:1 2:2 2:3 3:1 3:2 3:3 4:1 4:2 4:3
вероятно, это простой способ объединить столбцы в символы:
> d <- matrix(c(1:4,1:4,4:1,4:1), ncol=2) > factor(apply(d, 1, paste ,collapse=",")) [1] 1,4 2,3 3,2 4,1 1,4 2,3 3,2 4,1 Levels: 1,4 2,3 3,2 4,1