automatisation code

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

paul villaespesa
Messages : 12
Enregistré le : 13 Avr 2018, 17:25

automatisation code

Messagepar paul villaespesa » 16 Avr 2018, 17:06

Bonjour,
Je cherche à automatiser mon script, mais quand je lui demande de récupérer la valeur dans une colonne (DataBrush$Size.transect) il me donne ceci,

Code : Tout sélectionner

#estimation de la densité de brush pack
BrushPackDensityTotal<-(1/(DataBrush$Size.transect*length(levels(DataBrush$IDtransect))))*sum(1/DataBrush$li)
BrushPackDensityTotal

Cela donne un résultat de ce type:

Code : Tout sélectionner

> BrushPackDensityTotal
 [1] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[12] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[23] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[34] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[45] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[56] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[67] 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077 0.2723077
[78] 0.2723077 0.2723077 0.2723077

Alors que quand je rentre manuellement la valeur cela me donne mon résultat sous la forme que je recherche une seule valeur car je cherche a la rentrer dans un tableau ultérieurement.

Code : Tout sélectionner

> BrushPackDensityTotal<-(1/(25*length(levels(DataBrush$IDtransect))))*sum(1/DataBrush$li)
> BrushPackDensityTotal
[1] 0.2723077


Donc ma question est surtout de comprendre pourquoi le résultat change de forme, puis dans un deuxième temps comment rendre ça plus "esthétique"
Cordialement paul

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: automatisation code

Messagepar François Bonnot » 17 Avr 2018, 06:31

Bonjour,
Si le data.frame DataBrush a 80 lignes avec 80 fois la même valeur de Size.transect, tout est normal.
Pour ne récupérer que la première valeur: DataBrush$Size.transect[1]
comment rendre ça plus "esthétique"

Je ne comprends pas la question.
Cordialement
François

paul villaespesa
Messages : 12
Enregistré le : 13 Avr 2018, 17:25

Re: automatisation code

Messagepar paul villaespesa » 17 Avr 2018, 11:45

Merci beaucoup,

La question était la réponse que vous m'avez fourni, juste comment n'avoir qu'un seul résultat
merci

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: automatisation code

Messagepar Mickael Canouil » 18 Avr 2018, 13:59

Bonjour,

je suggérerais plutôt d'utiliser la fonction unique(), notamment si toute les valeurs de DataBrush$Size.transect sont identiques.
De cette façon, unique(DataBrush$Size.transect), en plus de ne sortir qu'une valeur, il permet de vérifier que la colonne ne contient que des éléments identiques.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Florent Aubry
Messages : 324
Enregistré le : 25 Juin 2010, 10:21

Re: automatisation code

Messagepar Florent Aubry » 19 Avr 2018, 14:11

Dans ton premier code ;

Code : Tout sélectionner

BrushPackDensityTotal<-(1/(DataBrush$Size.transect*length(levels(DataBrush$IDtransect))))*sum(1/DataBrush$li)
R boucle sur chaque élément de la colonne DataBrush$Size.transect, dénominateur de ton calcul. Il y a donc une réponse par élément de cette colonne.

Dans le second code :

Code : Tout sélectionner

BrushPackDensityTotal<-(1/(25*length(levels(DataBrush$IDtransect))))*sum(1/DataBrush$li)
length renvoie une valeur de longueur 1 ainsi que sum, il n'y a donc qu'une seule réponse.

Il se trouve que toutes les valeurs du vecteur colonne DataBrush$Size.transect sont identiques et valent 25, d'où ton résultat mais si ce n'était pas le cas et même si la valeur moyenne valait 25, tu verrais les différences.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité