2016-03-22 19 views
0

Ich habe eine Matrix so sein:Convert Matrix durch eine Spalte Vektor ein

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

Wie kann ich jede Spalte mache einen Vektor zu sein, dann einen Vektor für alle machen?

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

Ich versuche haben diese, aber das Ergebnis ist nicht das, was ich will ...

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

Antwort

0

Fest sapply Einsatz.

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

Eng, was ich will ... aber, was ich brauche, ist ... [1] 1,2 3,4 5,6 – ILoveThisName

+0

können Sie nur erhalten [1] "1,2" "3,4" "5,6" – Greenparker

+0

@MirantiVerdianaDewi so'unlist (strsplit (sapply (1: ncol (b), Funktion (i) einfügen (b [, i], kollabieren = ",")), ',')) 'dann? – Sotos

1

Es würde schneller sein (vorausgesetzt, Sie mehr Spalten als Zeilen) und weniger Tipp paste0 zu verwenden, um die zwei Zeilen Ihrer Matrix zu kombinieren, ein Komma kleben dazwischen:

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" 

Daten:

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

oder 'einfügen (c (mat), collapse =", ")' –

Verwandte Themen