J'essaye de créer une fonction qui renverra des comptes de nucléotides adjacents spécifiques (CG côte à côte) dans une fenêtre spécifique que j'ai formatée dans un vecteur.Recherche d'entrées vectorielles spécifiques dans une fenêtre coulissante
Je voudrais que les fenêtres pour être de 100 nucléotides de long et déplacer tous les déplacement 10.
Les données est configuré comme celui-ci (à 10k entrées):
data <- c("a", "g", "t", "t", "g", "t", "t", "a", "g", "t", "c", "t",
"a", "c", "g", "t", "g", "g", "a", "c", "c", "g", "a", "c")
Jusqu'à présent, je l'ai essayé ceci:
library(zoo)
library(seqinr)
rollapply(data, width=100, by=10, FUN=count(data, wordsize=2))
Mais je reçois toujours l'erreur
"Error in match.fun(FUN) :
'count(data, 2)' is not a function, character or symbol"
J'ai aussi essayé:
starts <- seq(1, length(data)-100, by = 100)
n <- length(starts)
for (i in 1:n){
chunk <- data[starts[i]:(starts[i]+99)]
chunkCG <- count(chunk,wordsize=2)
print (chunkCG)
}
Cependant, je ne sais pas comment enregistrer les données renvoyées. Cette approche ne me permet pas non plus de superposer des trames.
'(données, WordSize = 2)' est pas une fonction. Vous avez besoin de 'FUN = fonction (x) count (x, wordsize = 2)' probablement. Ou peut-être même '..., FUN = count, wordsize = 2)' pour votre appel 'rollapply'. – thelatemail
Vous voulez pour la ligne 1: 100, 101: 200, etc. le nombre de paires "cg"? –