Data.frame : enlever la ligne (i+1) marche mais pas pour la ligne (i+2) ?
Bonjour,
Dans un data.frame, j'étudie les évènements (1 à 42) en fonction de différents temps. Mon but est de calculer des temps de réactions par exemple.
Mon fichier de base est un fichier txt du type col 1="Action" identifiée par un numéro et col2="Temps"
Dans un premier temps, je trie les évènements qui m'intéressent (ici, 2,12 et 23) grâce à des lignes de types :
Code:
data2<-data1[which(data1[,1]!="3"),]
J'obtiens ainsi un fichier de ce type :
Code:
1 2 3 4 5 6 7 8 9 10
| Action Temps
23 2888
12 2898
2 3731
12 4474
23 6717
12 6735
2 7537
12 8240
... etc. |
J'enlève ensuite les doublons (par ex si j'ai 2 "12") qui se suivent j'enlève le second grâce à ce code :
Code:
1 2 3 4 5 6 7 8
| l<-c(1:(nrow(dataB)-1))
ligne.à.enlever<-list()
for(i in l) {
if(dataB[(i+1),1]==12 & dataB[(i),1]==12){
ligne.à.enlever[[i+1]]<-(i+1)}}
ligne.à.enlever<-unlist(ligne.à.enlever)
dataB<-dataB[-ligne.à.enlever,] |
Pour enlever les valeurs en gras dans mon exemple, j'utilise le même code :
Code:
1 2 3 4 5 6 7 8
| l<-c(1:(nrow(dataB)-1))
ligne.à.enlever<-list()
for(i in l) {
if(dataB[(i+2),1]==12 & dataB[(i),1]==12){
ligne.à.enlever[[i+2]]<-(i+2)}}
ligne.à.enlever<-unlist(ligne.à.enlever)
dataB<-dataB[-ligne.à.enlever,] |
Mais dans ce cas, j'ai le message d'erreur suivant :
Citation:
Erreur dans if (dataB[(i+2), 1] ==12 & dataB[(i), 1]== 12) { :
valeur manquante là où TRUE / FALSE est requis
J'ai parcouru les 20 dernières pages de ce forum et cherché sur le net, mais je n'ai rien trouvé qui puisse m'aider...
Quelqu'un comprend-t-il cette erreur ?