2013-02-17 47 views
7

Tự hỏi làm thế nào để lặp lại một vector thành một ma trận trong R. Ví dụvector trùng lặp vào ma trận r

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

nơi dup trông giống như rbind(1:10,1:10). Cảm ơn

+2

Chỉ cần thông báo: 'trùng lặp' là hàm tìm các từ khóa trùng lặp * trong * một vectơ. Và như @thelatemail ám chỉ, 'R' tái chế, và vì vậy bạn chỉ cần chỉ ra số lượng ma trận mà ma trận của bạn yêu cầu và' R' sẽ tự động lặp lại vectơ cho bạn. –

Trả lời

17

Tôi nghĩ bạn đang tìm kiếm replicate.

t(replicate(2, v)) 
+0

đáng chú ý với người đọc rằng 'tái tạo' thường không được sử dụng như thế này; Ngoài ra, nó còn chậm hơn nhiều so với cách tiếp cận của thelatemail dưới đây. Dù sao +1 cho dễ đọc/sang trọng. – MichaelChirico

16

Hoặc:

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

nhanh hơn transposing kết quả mà không sử dụng 'byrow' (như tôi dự kiến) – MichaelChirico

0

Cá nhân tôi chỉ cần nhân nó bằng một cái vector ..

ví dụ, nếu v là một vector cột: v [1 1] -> [ vv]

-1

Nếu bạn sử dụng tính năng ftable, bạn có thể bỏ qua số hàng của ma trận mới

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

Câu trả lời của bạn về cơ bản là vô ích mà không cần giải thích. –

0

Tương tự như câu trả lời của Moud nhưng rõ ràng hơn.

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

Nên nhanh nhưng không thanh lịch như một số câu trả lời khác.

Các vấn đề liên quan