如何在不使用c()函数的情况下生成每次移位1的整数序列?
实现目标序列的两种方法(不使用
c()) 你需要的是每次重复序列时整体移位1的结果,以下是两个不用c()的实现方式:
方法一:借助outer()和as.vector()
as.vector(outer(1:5, 0:4, "+")) # 输出结果: # 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
outer(1:5, 0:4, "+")会生成一个5×5的矩阵,每行对应一次移位后的序列;as.vector()会将矩阵按列展开,正好得到你要的连续序列。
方法二:通过序列索引生成
seq(1,9)[rep(1:5, each=5) + rep(0:4, 5)] # 输出结果: # 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
rep(1:5, each=5)生成重复5次的起始位置,rep(0:4,5)生成每次移位的偏移量,两者相加得到目标序列在seq(1,9)中的索引,直接提取即可。
内容的提问来源于stack exchange,提问作者Giulia Petrilli
相关产品推荐
相关产品推荐

