R嵌套for循环打印输出与存储向量结果不一致,如何存储打印结果?
问题原因
- 你当前的代码没有把打印的
sum(i+j)结果赋值给output向量,仅在循环中把i重复赋值给output[i],同一个i对应的两次内层j循环会覆盖同一个位置的取值,最终仅保留最后一次赋值的i,因此前4位为1、2、3、4,剩余位置保持初始的0值。 - 两层循环共执行8次,但你只用
i作为索引,无法覆盖8个存储位置。
解决方法
方法1:修改原有循环,增加索引计数器
x1<-c(1,2,3,4) x2<-c(1,0) output <- vector("numeric", 8) # 新增计数器定位存储位置 idx <- 1 for (i in x1){ for(j in x2){ res <- sum(i+j) print(res) output[idx] <- res idx <- idx + 1 } } output
运行后output的结果就是你打印的2 1 3 2 4 3 5 4。
方法2:使用R向量化操作替代循环,写法更简洁
x1<-c(1,2,3,4) x2<-c(1,0) output <- as.vector(t(outer(x1, x2, FUN = "+")))
直接得到目标向量,无需手动写循环。
内容的提问来源于stack exchange,提问作者Taiku
相关产品推荐
相关产品推荐

