I am writing codes about changing decimal numbers to binary numbers.
This is my code with while and it worked.
i <- 1
binary_vec <- rep(0, 5)
x <- 15
while (i <= 5) {
binary_vec[i] <- x %% 2
x <- x %/% 2
i <- i 1
}
binary_vec
However, I tried to write this code as a function and it failed.
i <- 1
decimal_to_binary <- function(x) {
binary_vec <- rep(0, 5)
while (i <= 5) {
binary_vec[i] <- x %% 2
x <- x %/% 2
i <- i 1
}
}
decimal_to_binary(22)
binary_vec
If I type decimal_to_binary(22), the result of binary_vec is supposed to be 01101 but it is not.
I want to know what's wrong.
CodePudding user response:
You are 99% of the way there! Move i inside the function and return the binary_vec object:
decimal_to_binary <- function(x) {
i <- 1
binary_vec <- rep(0, 5)
while (i <= 5) {
binary_vec[i] <- x %% 2
x <- x %/% 2
i <- i 1
}
binary_vec
}
decimal_to_binary(22)
Edits for a for loop version:
decimal_to_binary_for <- function(x, n=5) {
binary_vec <- NULL
for (i in 1:n) {
binary_vec[i] <- x %% 2
x <- x %/% 2
}
binary_vec
}
decimal_to_binary_for(22)
# [1] 0 1 1 0 1
decimal_to_binary_for(512, n=12)
# [1] 0 0 0 0 0 0 0 0 0 1 0 0
