函数未返回向量的问题

Joh*_*ohn 1 r return vector append

当谈到'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)
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 6

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

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

append(liste,test, after=k)
Run Code Online (Sandbox Code Playgroud)

应该只是:

liste[k] = test
Run Code Online (Sandbox Code Playgroud)

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

然而,有一个更简单的方法做你想要做什么,使用的expand.grid功能:

fn <- function(x, y) {
    rowSums(expand.grid(x, y))
}
Run Code Online (Sandbox Code Playgroud)