【问题标题】:Count the occurrences of factors per column in a matrix in R计算 R 中矩阵中每列因子的出现次数
【发布时间】:2020-10-23 00:55:59
【问题描述】:

我有一个大矩阵(10000 列和 600 行),下面显示了一个示例,其中包含核苷酸,但也包含 NA。我想计算每列每个核苷酸(因子)的出现次数,但忽略 NA。输出应该在一个列表中。

`r1 <- c("a","c","a","a","t","c")
 r2 <- c("a","c","t","t","c","a")
 r3 <- c("a","g","g","c","a","c")
 r4 <- c("a","g","g","g","g","c")
 r5<- c(NA, "g","g","g","t","g")

 n.mat <- rbind(r1,r2,r3,r4,r5)`

输出应该在一个列表中,该列表仅包含每列中每个核苷酸的出现次数。所以每个 List 元素都应该包含一列的数字。

[[1]]
[1] "4"
[[2]]
[2] "2" "3"
[[3]]
[3] "1" "1" "3"
[[4]]
[4] "1" "1" "1" "2"
[[4]]
[4] "2" "1" "1" "1"
[[5]]
[5] "3" "1" "1"

我已经在尝试找到解决方案,但我不知道如何实际计算矩阵中每列的出现次数。我的代码是:

alleles_nmat <- apply(n.mat, 2, function(x) unique(x[!is.na(x)]))

我希望有人可以帮助我。

【问题讨论】:

  • 请注意"NA" 不是NANA 是(不带引号)。

标签: r matrix


【解决方案1】:

喜欢这样吗?

apply(n.mat, 2, table)
[[1]]

 a NA 
 4  1 

[[2]]

c g  
2 3 

[[3]]

a g t 
1 3 1 

[[4]]

a c g t 
1 1 2 1 

[[5]]

a c g t 
1 1 1 2 

[[6]]

a c g 
1 3 1

【讨论】:

  • 是的,这就是我想要的,期望的,表格函数在我的矩阵上不起作用,因为它太大了,其次,我想忽略 NA。所以我不想以后在列表中看到它们。
  • 函数默认忽略NA。但是,在您的矩阵中,您没有 NA 作为缺失值,而是将 "NA" 作为字符值。 NA 不同于 "NA"
猜你喜欢
  • 1970-01-01
  • 2020-11-08
  • 2015-04-13
  • 1970-01-01
  • 2020-02-24
  • 2014-03-15
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多