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)
首先,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)