我有一个数据框,看起来像这样
**Contig_A** **Contig_B**
Contig_0 Contig_1
Contig_3 Contig_5
Contig_4 Contig_1
Contig_9 Contig_0我想计算有多少个重叠群in (从Contig_0到Contig_1193)没有出现在Contig_B的两个Contig_A列中。
例如:如果我们考虑这个数据帧总共有10个重叠群(Contig_0到Contig_9),那么答案将是4 (Contig_2,Contig_6,Contig_7,Contig_8)
发布于 2021-09-07 06:24:34
创建一个包含您想要检查的所有值的向量(all_contig),它在这里是Contig_0 to Contig_10。使用setdiff查找缺少的值,使用length获取缺少的值的计数。
cols <- c('Contig_A', 'Contig_B')
#If there are lot of 'Contig' columns that you want to consider
#cols <- grep('Contig', names(df), value = TRUE)
all_contig <- paste0('Contig_', 0:10)
missing_contig <- setdiff(all_contig, unlist(df[cols]))
#[1] "Contig_2" "Contig_6" "Contig_7" "Contig_8" "Contig_10"
count_missing <- length(missing_contig)
#[1] 5发布于 2021-09-07 06:26:30
作者:match,
x <- c(0:9)
contigs <- sapply(x, function(t) paste0("Contig_",t))
df1 <- data.frame(
Contig_A = c("Contig_0", "Contig_3", "Contig_4", "Contig_9"),
Contig_B = c("Contig_1", "Contig_5", "Contig_1", "Contig_0")
)
xx <- c(df1$Contig_A,df1$Contig_B)
contigs[is.na(match(contigs, xx))]
[1] "Contig_2" "Contig_6" "Contig_7" "Contig_8"在本例中,只需将x更改为x <- c(0,1193)即可
https://stackoverflow.com/questions/69083200
复制相似问题