将二进制转换为列表

Converting binary to list

我有一个像二进制数据帧一样的somating

> dput(head(dat))
structure(list(CDR3.aa = c("CALWEVQELGKKIKVF", "CAATVGGWGKLQF", 
"CACDPLYGGITGGFNTDKLIF", "CACDTLLPTSLGDMAKLIF", "CALGELSSDGGGAIF", 
"CALSNTGGFKTIF"), TCR_CS001_T1 = c(1, 1, 1, 1, 1, 0), TCR_CS001_T2 = c(0, 
1, 1, 1, 1, 0), TCR_CS002 = c(1, 0, 0, 0, 0, 0), TCR_HC002 = c(0, 
0, 0, 0, 0, 1), TCR_HC003 = c(1, 0, 0, 0, 0, 1)), row.names = c(NA, 
-6L), .internal.selfref = <pointer: 0x0000023f7a101ef0>, class = c("immunr_public_repertoire", 
"data.table", "data.frame"))

这表明样品中是否存在氨基酸,我们看到 1,如果不存在则显示为 0

我想用氨基酸本身代替1和0

请问我该怎么做?

如果CDR3.aa是你可以做的氨基酸柱:

dplyr :

library(dplyr)
dat %>% mutate(across(-CDR3.aa, ~ifelse(. == 1,  CDR3.aa, .)))

#                 CDR3.aa          TCR_CS001_T1          TCR_CS001_T2        TCR_CS002
#1:      CALWEVQELGKKIKVF      CALWEVQELGKKIKVF                     0 CALWEVQELGKKIKVF
#2:         CAATVGGWGKLQF         CAATVGGWGKLQF         CAATVGGWGKLQF                0
#3: CACDPLYGGITGGFNTDKLIF CACDPLYGGITGGFNTDKLIF CACDPLYGGITGGFNTDKLIF                0
#4:   CACDTLLPTSLGDMAKLIF   CACDTLLPTSLGDMAKLIF   CACDTLLPTSLGDMAKLIF                0
#5:       CALGELSSDGGGAIF       CALGELSSDGGGAIF       CALGELSSDGGGAIF                0
#6:         CALSNTGGFKTIF                     0                     0                0

#       TCR_HC002        TCR_HC003
#1:             0 CALWEVQELGKKIKVF
#2:             0                0
#3:             0                0
#4:             0                0
#5:             0                0
#6: CALSNTGGFKTIF    CALSNTGGFKTIF

data.table :

library(data.table)
dat[, (names(dat)[-1]) := lapply(.SD, function(x) ifelse(x == 1,  CDR3.aa, x)), .SDcols = -1]