如何反转向量中每两个连续元素的顺序?
如何在R中反转向量的每两个连续元素?
假设我们有如下向量:
x = c(1,2,3,4,5,6)
希望将每两个连续元素的顺序反转,得到结果:
2 1 4 3 6 5
方法1:矩阵重塑法
把向量转换为2行的矩阵,反转行顺序后再扁平化:
matrix(x, nrow = 2)[2:1, ] |> as.vector()
运行结果:
[1] 2 1 4 3 6 5
方法2:索引重排法
生成反转后的索引序列,直接重新排列向量元素:
idx <- rep(seq(2, length(x), 2), each = 2) - 1:0 x[idx]
逻辑说明:seq(2, length(x), 2)定位每对元素的末尾位置,通过rep和减法生成每对元素的反转索引(如2→2、1;4→4、3),最终用索引提取元素实现反转。
方法3:循环遍历法(直观易懂)
通过循环逐个处理每对元素:
result <- numeric(length(x)) for (i in seq(1, length(x), 2)) { result[i] <- x[i+1] result[i+1] <- x[i] } result
运行后同样得到目标结果。
内容的提问来源于stack exchange,提问作者An116
相关产品推荐
相关产品推荐

