通过列将矩阵转换为矢量为1

时间:2016-03-22 13:44:22

标签: r matrix

我有一个像这样的矩阵:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] I1   I1   I1   I1   I2   I2   I2   I3   I3   I4
[2,] I2   I3   I4   I5   I3   I4   I5   I4   I5   I5

如何将每列设为一个向量,然后为所有列创建一个向量?

[1]  I1,I2 I1,I3 I1,I4 I1,I5 I2,I3 I2,I4 I2,I5 I3,I4 I3,I5 I4,I5 

我试过这个,但结果不是我想要的......

sapply(b,function(i) paste(b[,i],collapse=","))

2 个答案:

答案 0 :(得分:1)

它会更快(假设你有更多列而不是行),并且使用paste0来组合矩阵的两行,在两者之间插入一个逗号,输入更少:

paste0(mat[1,], ",", mat[2,])
# [1] "I1,I2" "I1,I3" "I1,I4" "I1,I5" "I2,I3" "I2,I4" "I2,I5" "I3,I4" "I3,I5" "I4,I5"

数据:

mat <- combn(paste0("I", 1:5), 2)

答案 1 :(得分:0)

修正了快速使用。

> b <- matrix(1:20, nrow = 2, ncol = 10)

> sapply(1:ncol(b), function(i) paste(b[,i],collapse=","))
 [1] "1,2"   "3,4"   "5,6"   "7,8"   "9,10"  "11,12" "13,14" "15,16"
 [9] "17,18" "19,20"