1

当谈到'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)
4

1 回答 1

6

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

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

append(liste,test, after=k)

应该只是:

liste[k] = test

这是因为append它不会改变它传递的向量,它只是返回一个新的。

但是,有一种简单的方法来做你想做的事情,使用这个expand.grid函数:

fn <- function(x, y) {
    rowSums(expand.grid(x, y))
}
于 2013-03-01T20:36:14.910 回答