如何创建每个元素为前一个两倍的向量?对rep函数适用性存疑
创建等比数列向量的正确方法
你选rep()函数确实走偏了——rep()的核心是重复已有元素,而你要的是2的幂次构成的等比数列,直接用幂运算或专门的序列生成函数更高效:
方法一:幂运算直接生成
这是最直观的方式,利用2的整数次幂来构造:
# 生成前5项:1、2、4、8、16 vec <- 2^(0:4)
调整0:4里的数字就能控制项数,比如要前10项就改成0:9。
方法二:用seq()指定公比
seq()函数支持通过ratio参数生成等比数列:
# 从1开始,公比为2,生成5个元素 vec <- seq(from = 1, ratio = 2, length.out = 5)
这种方式更清晰,参数直接对应数列的起始值、公比和长度。
题外话:硬用rep()的绕路方式
如果非要用rep(),也能实现,但完全没必要这么折腾:
vec <- Reduce(function(x, y) x*2, rep(2, 4), init = 1)
本质是重复调用乘法逻辑,远不如前两种方法简洁。
内容的提问来源于stack exchange,提问作者Jamie Simeone
相关产品推荐
相关产品推荐

