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

如何在R中不使用循环生成跳过对应迭代元素的目标序列

无循环实现方案

这里有几种不用显式for循环的实现方式,都能得到目标序列2 3 1 3 1 2:

  • 函数式隐式迭代方案:
x <- unlist(lapply(1:3, function(i) (1:3)[-i]))

逻辑很直白:对1到3的每个i,提取1:3中除i外的元素,再把所有结果拼接成一个向量。

  • 矩阵操作方案:
# 将重复序列转为按行排列的3×3矩阵
mat <- matrix(rep(1:3, 3), nrow = 3, byrow = TRUE)
# 定位并标记第i行第i列的元素为NA
mat[cbind(1:3, 1:3)] <- NA
# 按行展开矩阵并剔除NA值
x <- na.omit(c(t(mat)))

利用矩阵索引精准定位要移除的元素,再通过转置和去NA操作得到目标序列。

  • 简洁mapply写法:
x <- unlist(mapply(function(vec, idx) vec[-idx], rep(list(1:3), 3), 1:3))

和第一种思路一致,只是通过mapply同时传递每组的基础向量和要移除的索引值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:33