You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在while循环中为变量赋值?能否不用c()给Storage赋值?

关于你的R代码问题解答

1. 能不能不用c()给Storage赋值?

当然可以,而且更推荐预先分配向量长度再通过索引赋值,这种方式比循环里反复用c()高效得多。

比如把代码改成这样:

# 预先分配好长度为9的数值向量
Storage <- numeric(9)
x <- 1
while(x <= 9){
  Storage[x] <- x
  x <- x + 1
}

之所以推荐这种方式,是因为每次调用c(Storage, x)都会创建一个全新的向量,把原来的元素和新元素复制进去,循环次数多的时候会频繁触发内存分配和数据复制,速度会很慢。预先分配长度就避免了这个问题。

如果不是必须用while循环,甚至可以直接用Storage <- 1:9一步生成目标向量,完全不需要循环。

2. c(Storage, x)的作用是什么?

c()是R里的连接函数(concatenate的缩写),这里的作用是把当前的Storage向量和单个值x拼接成一个新的向量,然后重新赋值给Storage变量。

举个循环过程的例子:

  • 第一次循环:Storage是空向量c(),c(Storage, 1)生成新向量[1],赋值给Storage;
  • 第二次循环:Storage是[1],c(Storage, 2)生成[1, 2],再赋值给Storage;
  • 以此类推,直到x等于9时,最后一次拼接得到[1,2,...,9],循环结束。

简单说就是每次把x的当前值追加到Storage的末尾,逐步构建出包含1到9的向量。


内容的提问来源于stack exchange,提问作者user19562955

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:20:26