函数未返回向量的问题

时间:2013-03-01 20:33:28

标签: r vector append return

当谈到'R'时,我是新手,但我已经阅读了相当多的信息,我仍然不明白为什么我不能打印我在函数fn中返回的向量 - 我只是得到值“NULL”。此函数的目标是从两个数组中获取值,将它们一起添加并将它们放在一个新数组中。我用print(test)命令检查数组中的数字是否正确地加在一起。也许我附加错了?我现在没有看到问题。

fn <- function(x,y) {
liste <- vector(mode = "numeric", length = 192)
k <- 0  
for (i in 1:(length(x))) {
    for (j in 1:(length(y))) {
        test<-x[i] + y[j]
        print(test)
        append(liste,test, after=k)
        k <- k +1
    }
}
return(liste)
}

event1 = c(0.0,5.0,10.0,12.0)
event2 = c(0.0,3.0,5.0,7.0)
event3 = c(6.0,8.0,10.0,10.0,12.0,13.0,13.0,14.0,16.0,17.0,17.0,20.0)

z <-fn(event2,event3)
names(z)

1 个答案:

答案 0 :(得分:6)

首先,z是一个向量(完全由0 s),它只是一个未命名的向量。这就是names(z)返回NULL的原因。

其次,在你的方法中,这一行:

append(liste,test, after=k)

应该只是:

liste[k] = test

这是因为append没有更改它传递的向量,它只返回一个新的。

然而,使用expand.grid函数,有一种很多更简单的方法来执行您要执行的操作:

fn <- function(x, y) {
    rowSums(expand.grid(x, y))
}