如何在RStudio中批量获取各样本RFU最大值对应的size_bp?
批量提取DNA样本RFU峰值对应的size_bp
方法1:Base R 实现
先筛选出所有样本RFU列(排除size_bp),用sapply批量处理每一列:
# 提取所有样本列名(排除size_bp) sample_cols <- setdiff(colnames(df), "size_bp") # 批量计算每个样本RFU最大值对应的size_bp peak_sizes <- sapply(sample_cols, function(col) { df$size_bp[which.max(df[[col]])] }) # 转成数据框(方便后续阈值比对),或直接保留列表格式 peak_sizes_df <- data.frame( sample_id = gsub("_rfu", "", names(peak_sizes)), # 去掉后缀_rfu得到样本ID peak_size_bp = as.numeric(peak_sizes) )
方法2:Tidyverse 风格(dplyr + purrr)
如果习惯用tidyverse工具链,先转成长格式再处理:
library(dplyr) library(tidyr) peak_sizes_df <- df %>% pivot_longer(-size_bp, names_to = "sample_id", values_to = "rfu") %>% group_by(sample_id) %>% filter(rfu == max(rfu)) %>% mutate(sample_id = gsub("_rfu", "", sample_id)) %>% select(sample_id, size_bp) %>% rename(peak_size_bp = size_bp)
后续使用说明
- 最终的
peak_sizes_df是数据框格式,包含样本ID和对应峰值size_bp,可直接用于阈值比对(比如筛选峰值超出指定范围的样本) - 若需保留列表格式,直接使用Base R方法生成的
peak_sizes即可
内容的提问来源于stack exchange,提问作者Abi
相关产品推荐
相关产品推荐

