I am new to R and I am trying to add on to the vector a using both a function and a loop. Here is my code:
add_to_a <- function(num){
print (paste("This is a: ", paste(a,collapse =" ")))
for (i in 1:3){
a <- c(a,"hello")
}
}
a <- c()
for(i in 1:5){
a<- add_to_a(i)
}
My output is:
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
I was trying to debug this problem and added a print statement:
add_to_a <- function(num){
print (paste("This is a: ", paste(a,collapse =" ")))
for (i in 1:3){
a <- c(a,"hello")
}
print (a)
}
a <- c()
for(i in 1:5){
a<- add_to_a(i)
}
This is my output:
[1] "This is a: "
[1] "hello" "hello" "hello"
[1] "This is a: hello hello hello"
[1] "hello" "hello" "hello" "hello" "hello" "hello"
[1] "This is a: hello hello hello hello hello hello"
[1] "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello"
[1] "This is a: hello hello hello hello hello hello hello hello hello"
[1] "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello"
[1] "This is a: hello hello hello hello hello hello hello hello hello hello hello hello"
[1] "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello"
and a is updated at the end as expected:
[1] "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello"
Could you help me understand why the outputs in the 2 cases are different?
The reason is because of local or global definition of variable. The function is not needed.
Be careful the num variable is not useful.
This solution should work :
a <- c()
for(i in 1:5){
print(paste("This is a: ", paste(a,collapse =" ")))
for (i in 1:3){
a <- c(a,"hello")
}
}
If you want to do something similar :
add_to_a <- function(a){
print(paste("This is a: ", paste(a, collapse =" ")))
for (i in 1:3){
a <- c(a, "hello")
}
return(a)
}
a <- c()
for(i in 1:5){
a <- add_to_a(a)
}
For a more complete explanation on local or global variables I advise you to look at this post.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With