Dans la R 2.14.1, ce qui n'est mauvais signe dans " par l'argument de dire?
Voici mon code
slidingwindowplotATGC = function(windowsize, inputseq)
{
starts = seq(1, length(inputseq)-windowsize, by = windowsize)
n = length(starts)
chunkGs = numeric(n)
chunkAs = numeric(n)
chunkTs = numeric(n)
chunkCs = numeric(n)
for (i in 1:n) {
chunk = windowsize[starts[i]:(starts[i]+9999)]
chunkG = sum("g" == chunk)/length(chunk)
chunkA = sum("a" == chunk)/length(chunk)
chunkT = sum("t" == chunk)/length(chunk)
chunkC = sum("c" == chunk)/length(chunk)
chunkGs[i] = chunkG
chunkAs[i] = chunkA
chunkTs[i] = chunkT
chunkCs[i] = chunkC
}
plot(starts,chunkGs,type="b",ylim=c(min(min(chunkAs),min(chunkTs),min(chunkCs),min(chunkGs)),max(max(chunkAs),max(chunkTs),max(chunkCs),max(chunkGs))),col = "red")
points(starts,chunkTs,col = "blue")
points(starts,chunkAs,col = "green")
points(starts,chunkCs)
}
Im obtenir le message d'erreur suivant,
Error in seq.default(1, length(inputseq) - windowsize, by = windowsize) :
wrong sign in 'by' argument
que je n'ai jamais eu avant lors de l'exécution de codes de ce genre, enfait je re couru ancien code qui fonctionnait parfaitement avant, sauf que cette fois-Im obtenir ce message d'erreur qui ne semble pas faire le moindre sens! J'ai besoin d'aide, avant de me passer complètement fou... Peut-être que je suis juste mauvais à ce programme, mais il me semble qu'il a un esprit de sa propre... j'avais aussi un message d'erreur avant concernant la ylim fonction, en précisant qu'elle devait être une valeur finie, qui est ce que je donnais il? À l'AIDE!!!
- Le premier problème est que vous avez besoin
nchar(inputseq)
plutôt quelength(inputseq)
dans la première ligne ... - la raison de votre
ylim
message d'erreur, c'est que tout dans votre calculée de paires de base de la fréquence des vecteurs a étéNA
...
Vous devez vous connecter pour publier un commentaire.
Changement
à
en supposant que vous êtes en utilisant un caractère de vecteur de inputseq, comme
ETA: mis à part cette différence, il y a de très graves problèmes avec la façon dont vous utilisez le caractère de vecteurs. Par exemple:
Pourquoi faut-il regarder comme si vous êtes de la sélection de windowsize, qui est juste un entier de votre taille de la fenêtre? Avez-vous été à essayer de sélectionner à partir de inputseq?
Même si vous avez été la sélection de inputseq, la façon de le faire est
substr(inputseq, start, stop)
D'où vient le
starts[i]+9999
viennent? Voulez-vous direstarts[i]+windowsize
?Vous devriez commencer sur et à examiner attentivement ce que vous êtes en train de faire, et d'apprendre les bons outils pour le faire au sein de R.
ETA: Voici une proposition de réécriture de ce que vous essayez de le faire (vous aurez besoin d'installer le forfait zoo de la première):
Cela devrait vous obtenez la plupart du chemin. Après ça, vous êtes sur votre propre 😉
rollapply
fonction dans lezoo
paquet, et d'envisagermean(chunk=="g")
plutôt quesum(chunk=="g")/length(chunk)
ruminisseq
). Avant de vous doit avoir été de l'appeler à l'aide d'un vecteur de chaînes individuelles, ou quelque chose de semblable (comme c("a", "c", "g", "g", "g", "a", "t")). Maintenant, vous êtes à l'appeler avec un caractère de vecteur comme "acgggat". Avec un personnage, vectoriel, rien de ce code fonctionne.dput(ruminisseq)
pour obtenir une version de ruminisseq nous pouvons le reproduire et de le coller dans la question? (Ou peut-être une courte séquence qui présente le même comportement problématique)for
boucle fait/peut faire. (Si je lance avec le caractère de vecteur, je reçois à travers la boucle sans erreurs, mais, comme expliqué ci-dessus, je me retrouve avec tous lesNA
s dans les résultats.)Une poursuite de la condensation. Vous devez spécifier
windowsize
(largeur de la fenêtre) etby
(périodicité de l'échantillonnage) séparément, bien que je pense vous vouliez de la même manière (c'est à dire hacher la séquence en morceaux) -- si vous voulez une fenêtre coulissante vous pouvez utiliserby=1
.L'erreur que vous voyez ci-dessus est le plus susceptible de se produire car pour une raison quelconque
windowsize
est plus grand quenchar(inputseq)
.Vous devriez également vérifier Bioconductor -- il est fort probable qu'il y a un code efficace, là quelque part pour faire ce genre de résumé.
s
avecinputseq