R函数填充向量

时间:2016-03-10 23:03:07

标签: r function

我想用函数返回的项填充向量。但我无法做到这一点

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

2 个答案:

答案 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