繁体   English   中英

如何将计数函数应用于 R 中列表中的每个元素?

[英]How to apply the count function to every element in a list in R?

目标:计算列表中每个元素(每个包含 10 个字符)中核苷酸的频率。

我试过了:

for (i in 1:1074){d10<-count(d10[["i"]],1)}

我不断收到“seq.default(from=1+start,to=length(seq),by=by) 中的错误:'by' 参数中的错误登录

我想要的是:

A G C T
3 4 2 1
A G C T
2 0 5 3

从第一个元素到最后一个元素 (1:1074)。

像这样的东西? 使用dplyr和一些dplyr数据:

library("dplyr")

df <- data.frame(element = c(rep("el1", 10), rep("el2", 10)),
                 character = c(rep("A", 5), rep("G", 5), rep("T", 5), "C", "C", "C", "A", "G"))


df %>% group_by(element, character) %>% 
      summarize(n = n())

# A tibble: 6 x 3
# Groups:   element [2]
  element character     n
  <fct>   <fct>     <int>
1 el1     A             5
2 el1     G             5
3 el2     A             1
4 el2     C             3
5 el2     G             1
6 el2     T             5

我们可以使用来自base R table

table(df)

数据

df <- data.frame(element = c(rep("el1", 10), rep("el2", 10)),
                 character = c(rep("A", 5), rep("G", 5), rep("T", 5), "C", "C", "C", "A", "G"))

如果确实是核苷酸,您可以这样做:

library(Biostrings)
d10 = list("ATGCATGCAT","TTTAAAGGGC","CGCGCGCGCG")

alphabetFrequency(DNAStringSet(unlist(d10)))[,1:4]
     A C G T
[1,] 3 2 2 3
[2,] 3 1 3 3
[3,] 0 5 5 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM