2017-08-22 7 views
-2

J'essaie de calculer l'aire sous la courbe pour chaque 10ms d'un court morceau d'onde EEG. Pour commencer, j'ai créé un petit jeu de données pour lancer la fonction auc (du paquet {flux}).R: la boucle ne fonctionnera pas en raison d'une erreur seq.default

x <- seq(1:10) 
y <- c(0:4,5:1) 
df <- data.frame(x,y) 
attach(df) 
plot(x,y) 

for (i in 1:10){ 
    x1 <- c(i,(i+1)) 
    y1 <- c(subset(y, x == i),subset(y, x == (i+1))) 
auc(x1,y1,thresh = 0) 
rm(y1,x1,i) 
} 

La boucle doit essayer de sous-ensemble de deux points de données de chaque variable puis exécutez un auc sur ces points de données. Cependant, lors de l'exécution de la boucle, je reçois cette erreur: Error in seq.default(x[1], x[2], length.out = dens) : 'to' must be a finite number

Quand je lance le code subset et auc en dehors de la boucle, cela fonctionne sans problème. Quelqu'un peut-il me dire ce qui ne va pas dans la boucle?

+0

Tel est le problème: sous-ensemble (y, x == (i + 1)) lorsque i == 10 – Roland

+0

pour i = 10 i + 1 = 11 , hors de votre 'df' –

+0

Je vois, comment pourrais-je réparer cela? – Fred

Répondre

0

Merci de mettre à jour la question. Ce n'est pas à cause de l'instruction de contrôle (pour la boucle), l'erreur est levée précisément quand i = 10 - parce que la longueur de vos vecteurs x-coords et y-coords est différente. Plus précisément c (10,11) vs c (1). Mais vous n'avez aucun point à x = 11!

simplement arrêter la boucle précoce, au moment opportun

+0

J'ai mis à jour ma question, la fonction 'auc' vient du paquet' {flux} '[link] (https://artax.karlin.mff.cuni.cz/r-help/library/flux/html/auc. html) – Fred