[英]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.