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

Azure机器学习工作室(R 3.1.0)中提取数据框行名转列的需求

解决R 3.1.0中将数据框行名转为变量的问题

嗨,针对你在Azure机器学习工作室R 3.1.0环境下的需求——把数据框DF的行名提取为code列,同时保留原数据作为label列,又没法用rownames()和tibble包,这里有两个靠谱的基础R方案:

方案1:通过属性直接提取行名(高效推荐)

在R中,数据框的行名其实是存储在row.names属性里的,我们可以用attr()函数直接获取,完全不依赖rownames():

# 提取所有行名作为code列向量
code_values <- attr(DF, "row.names")
# 构造目标数据框(假设原DF只有1列数据作为label;若有多列,可按需选择或合并)
result_df <- data.frame(
  label = DF[, 1], 
  code = code_values, 
  stringsAsFactors = FALSE
)

如果原数据框有多列需要作为label,可以用paste()合并,比如:

label_values <- do.call(paste, c(DF, sep = " "))
result_df <- data.frame(label = label_values, code = code_values, stringsAsFactors = FALSE)

方案2:利用索引遍历构造(适合小数据集)

如果你的数据框行数不多,也可以通过索引逐个提取行名和对应数据:

# 初始化空数据框,指定列类型避免因子转换
result_df <- data.frame(
  label = character(), 
  code = character(), 
  stringsAsFactors = FALSE
)

# 遍历每一行
for (idx in 1:nrow(DF)) {
  # 通过属性获取当前行的行名
  current_code <- attr(DF, "row.names")[idx]
  # 获取当前行的label数据(这里取第一列,可按需调整)
  current_label <- DF[idx, 1]
  # 追加到结果数据框
  result_df <- rbind(result_df, data.frame(label = current_label, code = current_code))
}

不过这个方法效率不如方案1,数据量大的时候优先选方案1。

验证结果

运行完代码后,用str(result_df)检查结构,确认code列是原行名,label列正确保留了原数据即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:43