如何计算 R 中两列的缺失值

How to count missing values from two columns in R

我有一个如下所示的数据框

**Contig_A**    **Contig_B**   

  Contig_0        Contig_1 
  Contig_3        Contig_5
  Contig_4        Contig_1
  Contig_9        Contig_0
  

我想计算有多少重叠群 ID(从 Contig_0 到 Contig_1193)不存在于 Contig_B 的任一 Contig_A 列中。

例如:如果我们考虑此数据框总共有 10 个重叠群(Contig_0 到 Contig_9),那么答案将是 4(Contig_2、Contig_6, Contig_7, Contig_8)

创建一个包含您要检查的所有值的向量 (all_contig),这里是 Contig_0Contig_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

来自 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)