2010-10-22 10 views
15

Tôi có 5 mục mà mỗi mục có thể nhận giá trị 1 hoặc -1. Tôi muốn tạo một ma trận bao gồm các hàng của các kết hợp có thể. Thứ tự của các mục không quan trọng và thứ tự của các kết hợp không quan trọng. Tôi biết tôi có thể làm điều này một cách máy móc, nhưng tôi nghĩ rằng ai đó phải biết một lối tắt để tạo ra ma trận này. Tôi xin lỗi nếu điều này tương tự như các câu hỏi khác nhưng không có giải pháp nào tôi tìm thấy có thể được áp dụng cho vấn đề cụ thể này với kỹ năng lập trình của tôi.Cách tạo ma trận kết hợp

Trả lời

27
expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1)) 
20

Để khái quát Greg của câu trả lời:

N <- 5 
vec <- c(-1, 1) 
lst <- lapply(numeric(N), function(x) vec) 
as.matrix(expand.grid(lst)) 
5

thay thế khác từ data.table gói phần mềm được nhanh hơn một chút so với expand.grid:

library(data.table) 
CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))