Bonjour,

Voici mon petit soucis. J'utilise actuellement une boucle dans une fonction afin d'identifier des valeurs comme fausses. Voici mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
out2NA <- function(x,seuil){
    st1 = NULL
    # Variable temporaire mémorisant la dernière valeur "correcte" relevée #
    temp <- st1[1] <- x[1]
    # Conserver l'indice de la valeur tampon #
    ind_temp <- 1
    # Définir ecart_temps max entre 2 comparaisons #
    ecart_temps <- 15
    # Conserver les temps de chaque élément de la série temporelle #
    tps <- time(x)   
 
    # Suppression des valeurs absolues dont l'écart avec la précédente est >= au seuil défini
    # et suppression des valeurs suivantes si la valeur aberrante se répète #
    for (i in 2:length(x)){
    if((!is.na(x[i])){
    if((tps[i]-tps[ind_temp] < ecart_temps) & (abs(x[i]-temp) > seuil)){  
    st1[i] <- NA
    }
    else {    
    temp <- st1[i] <- x[i]
    ind_temp <- i
    }
    }    
    }
 
    return(st1)
    }
Pour l'instant, il fonctionne bien ainsi. Il compare la valeur x[i] avec la valeur temporaire mémorisée, et regarde si l'écart temporel entre les 2 données n'est pas trop important. Mais comme il ne détecte pas tout à fait ce que je veux, j'aimerais lui rajouter une condition supplémentaire dans cette ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if((tps[i]-tps[ind_temp] < ecart_temps) & (abs(x[i]-temp) > seuil)  
    &(abs(x[i+1]-x[i])<1)){
Il ferait donc la même chose qu'avant, mais avec en plus une comparaison entre la valeur x[i] et la valeur qui la suit juste derrière x[i+1].

En testant ainsi, j'ai la réponse: "valeur manquante là où true/false est requis".
Je rajoute donc dans cette ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if((!is.na(x[i])&(!is.na(x[i+1])){
et si je teste à nouveau, j'ai l'erreur suivante: "le nombre d'objets à remplacer n'est pas multiple de la taille du remplacement "

J'ai donc essayé en changeant length(x) ou en utilisant dim(x), pensant que c'est le x[i+1] qui pose problème pour le calcul (et donc un problème de longueur du vecteur pour les comparaisons), mais je n'arrive pas pour l'instant.
Quelqu'un pourrait-il m'aider?
Merci d'avance!