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

R语言如何将向量按每n个元素拆分后按列绑定为数据框

R语言按固定间隔拆分向量为数据框列(tidyverse实现)

不需要写循环,用tidyverse的函数可以快速完成需求,以下是可直接运行的实现方案:


示例复现

先复现你给出的测试案例:测试向量长度12,每3个元素拆分为1列,最终得到3行4列的数据框。

library(tidyverse)

# 测试向量
test_vec <- c(1,2,3,4,5,6,7,8,9,10,11,12)
# 每组长度,即每列存放的元素个数,示例为3,你的实际场景改为11即可
n_per_col <- 3

# 方法1:逻辑清晰的tidyr宽表转换写法
df1 <- tibble(
  val = test_vec,
  col_name = paste0("Race ", rep(1:(length(test_vec)/n_per_col), each = n_per_col)),
  row_num = rep(1:n_per_col, times = length(test_vec)/n_per_col)
) %>%
  pivot_wider(names_from = col_name, values_from = val) %>%
  select(-row_num)

# 方法2:更简洁的矩阵转换写法,结果和方法1完全一致
df2 <- test_vec %>%
  matrix(nrow = n_per_col, byrow = FALSE) %>%
  as_tibble(.name_repair = ~paste0("Race ", seq_along(.)))

运行后得到的输出和你给出的示例表格完全匹配:

Race 1Race 2Race 3Race 4
14710
25811
36912

适配你的实际数据

你手里长度为1100、每11个元素为一组的向量,只需要替换向量变量、把n_per_col参数改成11即可:

# 替换为你自己的实际向量
my_vec <- c(...) # 存入你长度1100的目标向量
n_per_col <- 11

final_df <- my_vec %>%
  matrix(nrow = n_per_col, byrow = FALSE) %>%
  as_tibble(.name_repair = ~paste0("Race ", seq_along(.)))

注意:运行前确认向量总长度能被每组长度整除即可,你提到的11个为一组的场景属于整除情况,不会出现数值错位问题。如果你的向量实际长度是111000=11000,代码不需要修改,会自动生成1000列、每列11个元素的数据框。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:36:23