2013-02-17 23 views
7

fragen sich, wie ein Vektor in eine Matrix in R. duplizieren Zum Beispieldoppelte Vektor in Matrix r

v = 1:10 
dup = duplicate(V,2) 

wo dup wie rbind(1:10,1:10) aussieht. Danke

+2

Nur ein Blick nach oben: 'duplicated' ist eine Funktion, die Duplikate innerhalb * eines Vektors findet. Und wie @thelatemail angibt, "R" recycelt, und Sie müssen einfach angeben, wie viele Zeilen Ihre Matrix benötigt, und "R" wird den Vektor automatisch für Sie wiederholen. –

Antwort

17

Ich denke, Sie suchen nach replicate.

t(replicate(2, v)) 
+0

erwähnenswert für Leser, die 'replizieren' wird normalerweise nicht so verwendet; Außerdem ist es viel langsamer als der unten beschriebene Ansatz. Anyway +1 für Lesbarkeit/Eleganz. – MichaelChirico

16

Alternativ:

matrix(v,nrow=2,ncol=length(v),byrow=TRUE) 
+0

was ist schneller als die Umsetzung des Ergebnisses ohne Verwendung von 'byrow' (wie ich vermutete) – MichaelChirico

0

persönlich es ich multiplizieren nur durch eine solche Vektor ..

zum Beispiel, wenn v ein Spaltenvektor: v [1 1] -> [ vv]

-1

Wenn Sie ftable Sie die Anzahl der Zeilen der neuen Matrix weglassen

as.matrix(ftable(replicate(2,v))) 
+0

Ihre Antwort ist im Grunde nutzlos ohne Erklärungen. –

0

Ähnlich Mouds Antwort, aber mit etwas mehr Klarheit.

n <- 10 
v <- c(1,4,3,6,4,7,8,1) # random 
t(t(rep(1, n))) %*% v 

Sollte schnell sein, aber nicht so elegant wie einige der anderen Antworten.