我有一个像这样的矩阵:
[,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=","))
答案 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"