我想用函数返回的项填充向量。但我无法做到这一点
w=NULL
fn=function(x){
for (i in x){ if (i%%2==1){ w <- c(w, i)
} print (w)
} return (w) }
执行fn (c(1,3,4,7,8,9))
我还是
w NULL
我期待的是
w [1] 1 3 7 9
答案 0 :(得分:1)
这可以作为R代码,但它是你期待的吗?
w <- NULL
fn <- function(x){
for(i in x){
if(i%%2==1){
w <- c(w, i)
}
print (w)
}
return (w)
}
x <- c(1,3,4,7,8,9)
fn(x)
# [1] 1
# [1] 1 3
# [1] 1 3
# [1] 1 3 7
# [1] 1 3 7
# [1] 1 3 7 9
# [1] 1 3 7 9
你其实只是想要
x[x%%2==1]
# [1] 1 3 7 9
答案 1 :(得分:1)
通常,您希望在内使用 功能的w
与您在R会话中使用外部的功能不同(尽管两者都被称为相同) )。这就是为什么您的函数在执行后不会更改R会话中的w
并保持为NULL的原因。
如果您真的想在功能中更改R会话中w
的值,可以使用作业<<-
w = NULL
fn = function (x) {
for (i in x) {
if (i %% 2 == 1) {
w <<- c (w, i) ## here is the change
}
print (w)
}
return (w) # and this is not strictly needed
}
fn (c(1,3,4,7,8,9))
w
[1] 1 3 7 9