当谈到'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)
答案 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))
}