2011-02-17 142 views
3

这里多维数据结构是一个例子:因子()为R中

矩阵状

 [,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?

+0

如果你只是给出渲染矩阵的代码,那会让生活变得更容易一些。 – 2011-02-17 09:17:31

回答

3

您可以用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" 
2

可能它是Concat的的的cols成字符简单的方法:

> 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 
+0

THX很多。但我仍然需要它作为进一步的验光数字... – iano 2011-02-17 08:32:50

+0

因子不是数字,即使它看起来像数字。例如,< - 因子(1:2);总和(a)不能工作。然后,最好显示你想要做的因素。必须有其他方法。 – kohske 2011-02-17 08:42:47

2

或者,您可以直接使用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