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

R语言实现data.frame到带自定义名称长/行向量的转换

解决方案

你原有代码存在两处不符合需求的问题:

  • 向量名称使用了患者TCGA ID,而非要求的s1、s2……sn序列命名
  • 未对两个数据集做患者ID匹配,直接按行取数容易出现样本顺序错配

步骤1:匹配对齐两个数据集的样本

首先将两个数据集按患者ID关联,保证每个样本的数值指标和分组标签一一对应:

# 将因子格式的patient列转为字符型,用于匹配
Sample_info$patient <- as.character(Sample_info$patient)
# 构造Age表的患者ID列,和Sample_info匹配合并
match_df <- merge(
  x = data.frame(
    patient = rownames(Age),
    Blast_Percentage = Age$Blast_Percentage
  ),
  y = Sample_info[, c("patient", "FAB")],
  by = "patient",
  all.x = TRUE
)

如果你确认两个数据集的行顺序完全一致(第n行对应同一个患者),可以跳过该匹配步骤,但临床数据常规建议做ID校验,避免顺序错误。


步骤2:生成目标数值型向量

# 提取原始数值列转为numeric类型,按顺序生成s+序号的名称
age_vec <- setNames(
  as.numeric(match_df$Blast_Percentage),
  paste0("s", seq_len(nrow(match_df)))
)

# 校验类型
class(age_vec) # 输出 [1] "numeric"

输出格式和你给出的参考样式完全一致,名称为s1到sn,值对应原始的Blast_Percentage数值。


步骤3:生成目标字符型向量

# 提取分组列转为character类型,使用和数值向量完全一致的命名规则,保证样本顺序对应
group_vec <- setNames(
  as.character(match_df$FAB),
  paste0("s", seq_len(nrow(match_df)))
)

# 校验类型
class(group_vec) # 输出 [1] "character"

输出格式和你给出的分组参考样式完全一致,名称和数值向量一一对应,值为FAB分型标签。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:54:15