Я знаю, что могу использовать для этого файл expand.grid, но я пытаюсь научиться программировать. Моя цель - взять то, что у меня есть ниже, и использовать рекурсию, чтобы получить все 2 ^ n двоичных последовательностей длины 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 заполняется рекурсивно.