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

列表中多数据框批量生成合并状态列的R代码优化需求

批量处理多数据框的logFC状态生成与合并方案

核心逻辑

  • 自动识别每个数据框中符合规则的logFC相关列(支持自定义匹配模式)
  • 按规则映射状态:NA→Unaffected,负值→Down,正值→Up
  • 将多条件状态合并为单个带条件标识的字符串列(例如A:Up, B:Down)
  • 封装为可复用函数,直接批量处理数据框列表

可复用R函数

library(dplyr)
library(purrr)
library(stringr)

process_logFC_list <- function(df_list, logFC_pattern = "^logFC_") {
  map(df_list, function(df) {
    # 筛选所有匹配的logFC列
    logFC_cols <- grep(logFC_pattern, colnames(df), value = TRUE)
    
    # 生成各条件的状态列,命名为「条件:状态」格式
    df <- df %>%
      mutate(across(all_of(logFC_cols), 
                    ~case_when(
                      is.na(.) ~ "Unaffected",
                      . < 0 ~ "Down",
                      . > 0 ~ "Up"
                    ),
                    .names = "{str_remove(.col, logFC_pattern)}:{.value}"))
    
    # 提取所有生成的状态列,合并为单个列
    status_cols <- setdiff(colnames(df), c("PTM", logFC_cols))
    df %>%
      mutate(Combined_Status = paste(!!!syms(status_cols), collapse = ", ", .by = PTM)) %>%
      select(PTM, Combined_Status, all_of(logFC_cols)) # 按需保留原logFC列
  })
}

使用说明

  1. 准备好你的数据框列表(例如my_df_list)
  2. 直接调用函数完成批量处理:
processed_df_list <- process_logFC_list(my_df_list)
  1. 若logFC列的命名规则不是logFC_前缀(比如是FC_XXX),可自定义匹配模式:
processed_df_list <- process_logFC_list(my_df_list, logFC_pattern = "^FC_")

关键细节

  • 函数会自动适配每个数据框的独立列名规则,无需逐个编写重复代码
  • Combined_Status列清晰展示每个PTM在不同条件下的状态
  • 保留原logFC列方便后续验证,若不需要可删除select中的all_of(logFC_cols)参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:20:35