Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
[Résolu] Question algorithmique
2 participants
Page 1 sur 1
[Résolu] Question algorithmique
Bonjour,
J'ai une matrice :
Mon objectif est de récupérer la valeur la plus faible étant donné que sa réponse est vraie et que les valeurs supérieures ont également une réponse vraie.
Dans l'exemple, ce serait récupérer la valeur 4 car elle a une réponse vraie et que la valeur supérieure (5) a également une réponse vraie.
J'aimerais faire cela de manière automatique mais je n'arrive pas à trouver un algorithme.
Auriez-vous une idée pour réussir à récupérer cette valeur automatiquement ?
Merci d'avance
J'ai une matrice :
- Code:
testons=matrix(,2,5);testons[1,]=1:5;testons[2,]=c(FALSE,TRUE,FALSE,TRUE,TRUE);rownames(testons)=c("valeur","réponse")
testons
Mon objectif est de récupérer la valeur la plus faible étant donné que sa réponse est vraie et que les valeurs supérieures ont également une réponse vraie.
Dans l'exemple, ce serait récupérer la valeur 4 car elle a une réponse vraie et que la valeur supérieure (5) a également une réponse vraie.
J'aimerais faire cela de manière automatique mais je n'arrive pas à trouver un algorithme.
Auriez-vous une idée pour réussir à récupérer cette valeur automatiquement ?
Merci d'avance
Dernière édition par zezima le Mar 9 Jan 2018 - 15:21, édité 1 fois
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: [Résolu] Question algorithmique
Bonjour,
si tes données sont ordonnées comme dans ton exemple tu peux essayer ceci :
si tes données sont ordonnées comme dans ton exemple tu peux essayer ceci :
- Code:
fun <- function(testons) {
rle1 <- rle(testons["réponse",])
pos <- which.max(cumsum(rle1$le > 1 & rle1$val > 0.5))
pos <- sum(rle1$length[seq_len(pos-1)])+1
res <- testons["valeur", pos]
return(res)
}
fun(testons)
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: [Résolu] Question algorithmique
Bonjour Droopy,
Merci, ton code est génial !
Tu m'as fait découvrir rle(), qui est vachement utile.
Dans tous les cas de figures possible, la valeur renvoyée est la bonne.
Merci !
Merci, ton code est génial !
Tu m'as fait découvrir rle(), qui est vachement utile.
- Code:
fun <- function(testons) {
rle1 <- rle(testons["réponse",])
pos=ifelse(0%in%rle1$val,cumsum(rle1$le)[max(which(rle1$val==0))]+1,1)
res=ifelse(tail(rle1$val,1)==0,"NS",testons["valeur", pos])
return(res)
}
aaa=expand.grid(a=c(0,1),b=c(0,1),c=c(0,1),d=c(0,1),e=c(0,1));aaa
testons=list()
for(i in 1:32){
testons[[i]]=matrix(,2,5);testons[[i]][1,]=1:5;testons[[i]][2,]=as.numeric(aaa[i,]);rownames(testons[[i]])=c("valeur","réponse")
}
sapply(testons,function(x) fun(x))
Dans tous les cas de figures possible, la valeur renvoyée est la bonne.
Merci !
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Sujets similaires
» [Résolu] Question sur les formats
» Peut-on analyser un questionnaire question par question
» Comparaison de moyenne suivant des groupes
» [R] Régression logistique PLS [RESOLU]
» [R] Forêt aléatoire [RESOLU]
» Peut-on analyser un questionnaire question par question
» Comparaison de moyenne suivant des groupes
» [R] Régression logistique PLS [RESOLU]
» [R] Forêt aléatoire [RESOLU]
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum