[英]Unable to update vector using loop and function in R
我是 R 的新手,我正在嘗試使用 function 和循環添加到向量 a 中。 這是我的代碼:
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)
}
我的 output 是:
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
[1] "This is a: "
我試圖調試這個問題並添加了一個打印語句:
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)
}
這是我的 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"
並且 a 按預期在最后更新:
[1] "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello" "hello"
你能幫我理解為什么這兩種情況下的輸出不同嗎?
原因是由於變量的局部或全局定義。 不需要 function。 小心num
變量沒有用。
此解決方案應該有效:
a <- c()
for(i in 1:5){
print(paste("This is a: ", paste(a,collapse =" ")))
for (i in 1:3){
a <- c(a,"hello")
}
}
如果你想做類似的事情:
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)
}
有關局部或全局變量的更完整解釋,我建議您查看這篇文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.