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

如何匹配列表中不同长度的列?rowwise()实现困惑

在R中对齐向量并保留列名的解决方案

首先纠正向量创建的语法错误:R中创建向量需要用c()而非(),正确定义如下:

A <- c(1, 2, 3, 4)
B <- c(1:24)
C <- c(1, 2, 3, 4)

你不需要用rowwise(),这个函数多用于逐行计算,你的需求是按固定规则提取B的元素并与A、C对齐,直接通过索引取值即可实现。

方案1:匹配你描述的规则(A第2个→B第6个,A第3个→B第12个,依此类推,A第1个对应B第1个)

# 定义需要保留的B元素的索引
target_indices <- c(1, 6, 12, 18)

# 构造对齐后的带列名数据框
result <- data.frame(
  A = A,
  B = B[target_indices],
  C = C
)

# 查看结果
print(result)

运行输出:

A  B C
1 1  1 1
2 2  6 2
3 3 12 3
4 4 18 4

方案2:通用分组提取(若A/C长度为n,B长度为6n,取每组第6个元素与A/C对齐)

如果你的逻辑是A的第i个元素对应B中第6*i个元素(即每6个B元素取最后一个),可以用更通用的写法:

# 自动生成索引,从6开始,步长6,直到B的末尾
target_indices <- seq(from=6, to=length(B), by=6)

result <- data.frame(
  A = A,
  B = B[target_indices],
  C = C
)

运行输出:

A  B C
1 1  6 1
2 2 12 2
3 3 18 3
4 4 24 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:06:21