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

如何在R语言中为数据框添加重复列名作为首列?

在R语言中创建带循环行名的数据框datanew

需求说明

基于已有的data数据框,创建新数据框datanew,保留原数据的所有列值,同时将行名设置为原数据框的列名A、B、C、D循环重复3次(匹配原数据12行的长度)。

方法一:基础R实现

直接复制原数据,生成循环的行名向量并赋值给新数据框的行名:

# 生成原数据框(已提供的代码)
set.seed(123)
data <- as.data.frame(matrix(rnorm(12 * 4, mean = 0, sd = 1), 12, 4))
colnames(data) <- c("A", "B", "C", "D")

# 创建datanew并设置循环行名
datanew <- data
# 重复列名3次,生成12个元素的行名向量
rownames(datanew) <- rep(colnames(data), times = 3)

执行后查看datanew即可得到目标效果:

> datanew
                 A          B          C           D
A    -0.56047565  0.4007715 -0.6250393  0.55391765
B    -0.23017749  0.1106827 -1.6866933 -0.06191171
C     1.55870831 -0.5558411  0.8377870 -0.30596266
D     0.07050839  1.7869131  0.1533731 -0.38047100
A     0.12928774  0.4978505 -1.1381369 -0.69470698
B     1.71506499 -1.9666172  1.2538149 -0.20791728
C     0.46091621  0.7013559  0.4264642 -1.26539635
D    -1.26506123 -0.4727914 -0.2950715  2.16895597
A    -0.68685285 -1.0678237  0.8951257  1.20796200
B    -0.44566197 -0.2179749  0.8781335 -1.12310858
C     1.22408180 -1.0260044  0.8215811 -0.40288484
D     0.35981383 -0.7288912  0.6886403 -0.46665535

方法二:tidyverse风格实现

使用dplyr包的函数完成行名设置,适合习惯tidyverse工作流的用户:

library(dplyr)

# 生成原数据框
set.seed(123)
data <- as.data.frame(matrix(rnorm(12 * 4, mean = 0, sd = 1), 12, 4))
colnames(data) <- c("A", "B", "C", "D")

# 创建datanew
datanew <- data %>%
  # 添加临时列存储循环的列名
  mutate(row_names = rep(colnames(data), times = 3)) %>%
  # 将临时列转为行名
  column_to_rownames(var = "row_names")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:39:18