mettre plusieurs conditions dans l'écriture d'une fonction

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Julie Eyraut
Messages : 3
Enregistré le : 14 Nov 2017, 18:00

mettre plusieurs conditions dans l'écriture d'une fonction

Messagepar Julie Eyraut » 20 Fév 2018, 14:49

Bonjour,

J'ai le tableau "results" suivant (voir dessous) possédant des milliers de lignes.
La colonne "MAPINFO" représente la localisation chromosomique des gènes associés ("gene_symbol"), les colonnes "MAPINFO_less_200" et "MAPINFO_plus_200" respectivement la localisation chromosomique des gènes associés MOINS et PLUS 200 paires de bases.

Je désire sélectionner les gènes ayant une Pval_LRT inférieure ou égale à 10^-4. Jusque là pas de problème j'ai utilisé la fonction suivante:
results_threshold104 <- results[(results$Pval_LRT<=10^-4),]

Cependant, je désire en réalité sélectionner les gènes ayant une Pval_LRT inférieure ou égale à 10^-4 plus ceux étant localisés entre -200 et +200 paires de base des gènes ayant une Pval_LRT inférieure ou égale à 10^-4, quel que soit leur propre Pval_LRT. Autrement dit, plus ceux ayant un "MAPINFO" situé entre "MAPINFO_less_200" et "MAPINFO_plus_200" de tous les gènes ayant une Pval_LRT inférieure ou égale à 10^-4.

Je ne sais pas si je suis très claire, je ne parviens pas à mettre plusieurs conditions dans l'écriture d'une fonction.

Je vous remercie pour votre aide !

Bonne journée,

Julie



MAPINFO_less_200 MAPINFO MAPINFO_plus_200 Pval_LRT gene_symbol
45485358 45485558 45485758 3.397966e-05 TRAPPC10
47560579 47560779 47560979 4.408025e-05 FTCD
40032646 40032846 40033046 1.244559e-04 ERG
46572301 46572501 46572701 2.194433e-04 ADARB1
45678177 45678377 45678577 1.441670e-04 DNMT3L
43346434 43346634 43346834 3.567101e-04 C2CD2
35748241 35748441 35748641 3.667400e-04 SMIM11

Serge Rapenne
Messages : 1144
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: mettre plusieurs conditions dans l'écriture d'une fonction

Messagepar Serge Rapenne » 20 Fév 2018, 15:36

Bonjour,

Une possibilité

Code : Tout sélectionner

results_threshold104 <- results[(results$Pval_LRT<=10^-4)|(results$MAPINFO>results$MAPINFO_less_200 & results$MAPINFO<results$MAPINFO_plus_200) ,]

Avec R : "et" s’écrit "&" et "ou" s’écrit "|".

Serge

Logez Maxime
Messages : 2780
Enregistré le : 26 Sep 2006, 11:35

Re: mettre plusieurs conditions dans l'écriture d'une fonction

Messagepar Logez Maxime » 20 Fév 2018, 16:05

Bonjour,

pour compléter la réponse de Serge, tu peux aussi utiliser la fonction subset ou with pour une plus grande lisibilité :

Code : Tout sélectionner

subset(results, Pval_LRT <= 1e-4 | (MAPINFO > MAPINFO_less_200 & MAPINFO < MAPINFO_plus_200))
results_threshold104 <- results[with(results, Pval_LRT <= 1e-4 | (MAPINFO > MAPINFO_less_200 & MAPINFO < MAPINFO_plus_200)) ,]
Cordialement,
Maxime

Julie Eyraut
Messages : 3
Enregistré le : 14 Nov 2017, 18:00

Re: mettre plusieurs conditions dans l'écriture d'une fonction

Messagepar Julie Eyraut » 21 Fév 2018, 10:47

Merci beaucoup pour vos réponses, je vais essayer ainsi.
Bonne journée,
Julie


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Pierre-Yves Berrard et 1 invité