2013-01-10 67 views

回答

1

intToBin正在恢復的字符,所以使用strsplit投入矩陣之前將其拆分成單獨的位(比特)。

m <- 5 
k <- 12 
W <- sample(1:(2**m), k) 
M <- matrix(as.numeric(unlist(strsplit(intToBin(W), ""))), nrow= k, byrow = TRUE) 
> M 
     [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 1 0 0 0 0 0 
[2,] 0 1 1 0 0 0 
[3,] 0 0 0 1 1 0 
[4,] 0 1 0 0 1 1 
[5,] 0 1 0 1 1 0 
[6,] 0 1 1 1 0 0 
[7,] 0 0 0 0 0 0 
[8,] 0 1 1 1 1 0 
[9,] 1 1 0 1 0 1 
[10,] 1 0 0 1 1 1 
[11,] 0 0 1 1 1 1 
[12,] 0 0 1 1 0 1 
+1

哎,你應該增加一個選項byrow = TRUE到矩陣(),也不會像廣告:) – user189035

+0

工作@ user189035良好的漁獲! – Gregor

2

intToBin將返回的字符串二進制表示。

您可以拆分該字符串,轉換爲整數,然後合併行。

M<-do.call(rbind, lapply(strsplit(intToBin(W),''), as.integer))