在R语言中批量生成反值列(anticolumns)的实现方法
使用dplyr批量生成反值列
示例数据构造
先构建符合需求的示例数据框:
library(dplyr) df <- tibble( Gene1 = c(1, 1, 0), Gene2 = c(0, 1, 0), Gene3 = c(1, 0, 1) )
核心解决方案代码
利用dplyr的mutate结合across,可以一次性处理所有列,生成带_wt后缀的反值列:
df_result <- df %>% mutate(across(everything(), ~ 1 - ., .names = "{.col}_wt"))
代码说明
across(everything()):选中数据框内所有列,适配数百列的批量处理场景~ 1 - .:对每一列的每个元素计算反值(适配原数据为0/1的情况).names = "{.col}_wt":定义新列命名规则,自动在原列名后添加_wt后缀
输出结果
运行代码后得到的结果如下:
print(df_result) # # A tibble: 3 × 6 # Gene1 Gene2 Gene3 Gene1_wt Gene2_wt Gene3_wt # <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> # 1 1 0 1 0 1 0 # 2 1 1 0 0 0 1 # 3 0 0 1 1 1 0
内容的提问来源于stack exchange,提问作者Aryh
相关产品推荐
相关产品推荐

