ฉันรู้ว่าฉันสามารถใช้expand.gridได้ แต่ฉันกำลังพยายามเรียนรู้การเขียนโปรแกรมจริง เป้าหมายของฉันคือนำสิ่งที่ฉันมีด้านล่างและใช้การเรียกซ้ำเพื่อให้ได้ลำดับไบนารี่ที่มีความยาว n ทั้งหมด 2^n
ฉันสามารถทำเช่นนี้ได้สำหรับ n = 1 แต่ฉันไม่เข้าใจว่าฉันจะใช้ฟังก์ชันเดียวกันในลักษณะวนซ้ำเพื่อให้ได้คำตอบสำหรับมิติที่สูงกว่าได้อย่างไร
นี่คือสำหรับ n = 1:
binseq <- function(n){
binmat <- matrix(nrow = 2^n, ncol = n)
r <- 0 #row counter
for (i in 0:1) {
r <- r + 1
binmat[r,] <- i
}
return(binmat)
}
ฉันรู้ว่าฉันต้องใช้ cbind ในคำสั่ง return สัญชาตญาณของฉันบอกว่าคำสั่ง return ควรเป็นเช่น cbind(binseq(n-1), binseq(n)) แต่จริงๆ แล้ว ณ จุดนี้ ฉันหลงทางไปหมดแล้ว
โดยทั่วไปเอาต์พุตที่ต้องการควรสร้างสิ่งนี้ซ้ำ ๆ สำหรับ n = 3:
binmat <- matrix(nrow = 8, ncol = 3)
r <- 0 # current row of binmat
for (i in 0:1) {
for (j in 0:1) {
for (k in 0:1) {
r <- r + 1
binmat[r,] <- c(i, j, k)}
}
}
binmat
มันควรจะเป็นเมทริกซ์เนื่องจาก binmat กำลังถูกเติมแบบวนซ้ำ