我正试图创建一个循环,运行向量中具有特定I值的函数:
例如,当I为1和5 时,我想保存I+2
test<- c()
for(i in c(1,5)){
test[i] <- i + 2
}
这最终打印2、3和4的NA:[1] 3 NA NA NA 7
而我想要的结果是:[1] 3 7
这可能是非常初级的,但我似乎无法理解。
R是矢量化的,这意味着您可以这样做:
c(1, 5) + 2
# [1] 3 7
R中的for
循环通常非常慢,这就是为什么它们在*apply
家族的函数(例如(中以C实现的原因
sapply(c(1, 5), (i) i + 2)
# [1] 3 7
如果你真的需要依赖一个for
循环;对于";循环,您可能希望循环索引而不是值(一个非常常见的错误!(:
v <- c(1, 5)
test <- vector('numeric', length(v))
for (i in seq_along(v)) {
test[i] <- v[i] + 2
}
test
# [1] 3 7
使用append
test<- c()
for(i in c(1,5)){
test<-append(test,i+2)
}