如何将单行dataframe与字符向量合并为目标格式的dataframe?
解决方案:单行DataFrame与字符向量合并成多行DataFrame
问题场景
现有一个单行元数据DataFrame:
# 示例数据 meta_df <- data.frame( Donor = "WT5", Treatment = "ST002_50uM", Timepoint = "6hr", row.names = "MK434_016" )
以及一个包含细胞ID的字符向量:
cell_ids <- c("AAACAAGCAAACAAGAATTCGGTT-1", "AAACAAGCAAACAATCATTCGGTT-1", "AAACAAGCAAACCTGAATTCGGTT-1", "AAACAAGCAAACTTGGATTCGGTT-1", "AAACAAGCAAAGACCCATTCGGTT-1", "AAACAAGCAAAGGTAAATTCGGTT-1")
需要将元数据重复对应次数,把字符向量作为新行名,得到每行对应一个细胞ID的DataFrame。
实现方法
方法1:基础R代码
核心思路是重复单行数据至字符向量长度,再替换行名:
# 重复单行DataFrame,次数等于cell_ids的元素个数 result_df <- meta_df[rep(1, length(cell_ids)), ] # 替换为目标行名 rownames(result_df) <- cell_ids
方法2:dplyr包简化实现
如果习惯用tidyverse工具链:
library(dplyr) result_df <- meta_df %>% # 重复所有行(这里仅1行)指定次数 slice(rep(1:n(), each = length(cell_ids))) %>% # 赋值新行名 `rownames<-`(cell_ids)
说明
之前尝试的rbind()需要行数匹配的数据集才能合并,paste()是字符拼接操作,都不适合这种"单行数据批量重复+替换行名"的场景,上述两种方法可以直接得到你需要的结果。
内容的提问来源于stack exchange,提问作者jcorn427
相关产品推荐
相关产品推荐

