Как применить функцию подсчета к каждому элементу в списке в R? - PullRequest
0 голосов
/ 17 марта 2020

Цель: подсчитать частоту нуклеотидов в каждом элементе (каждый из которых содержит 10 символов) из списка.

Я попытался:

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

Я продолжаю получать "Ошибка в послед. по умолчанию (от = 1 + начало, до = длина (сек), by = by): неверный вход в аргумент 'by'

Что я хочу:

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

от первого элемента до последнего элемента (1: 1074).

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Мы можем использовать table из base R

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"))
0 голосов
/ 17 марта 2020

Если это действительно нуклеотиды, вы можете сделать:

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
0 голосов
/ 17 марта 2020

Как то так? Используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...