2013-02-17 18 views
7

Zastanawiasz się, jak powielać wektor do matrycy w R. Na przykładduplikat wektor do macierzy R

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

gdzie dup wygląda rbind(1:10,1:10). Dzięki

+2

Tylko heads up: 'duplicated' to funkcja, która znajduje duplikaty * wewnątrz * wektora. A ponieważ @thelatemail nawiązuje do tego, 'R' przetwarza, a więc po prostu musisz wskazać, ile wierszy wymaga twoja macierz, a' R' automatycznie powtórzy wektor dla ciebie. –

Odpowiedz

17

Myślę, że szukasz replicate.

t(replicate(2, v)) 
+0

warto zauważyć, że "replikacja" zwykle nie jest używana w ten sposób; Ponadto, jest znacznie wolniejszy niż poniższe podejście. W każdym razie +1 pod względem czytelności/elegancji. – MichaelChirico

16

alternatywnie:

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

, która jest szybsza niż transpozycja wyniku bez użycia 'byrowa' (jak sądzę, że się spodziewam) – MichaelChirico

0

osobiście prostu pomnożyć przez jedynek wektora ..

na przykład, gdy v jest wektorem kolumna V [1 1] -> [ vv]

-1

Jeśli używasz ftable można pominąć liczbę wierszy nowej matrycy

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

Twoja odpowiedź jest w zasadzie bezużyteczna bez wyjaśnień. –

0

Podobny do odpowiedzi Mouda, ale z nieco większą jasnością.

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

Powinien być szybki, ale nie tak elegancki jak niektóre inne odpowiedzi.

Powiązane problemy