Automatisation 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

Sosa Sebastian
Messages : 12
Enregistré le : 06 Fév 2012, 12:57

Automatisation d'une fonction

Messagepar Sosa Sebastian » 18 Mar 2016, 18:49

Bonjour,

Je voudrais faire une fonction afin d'automatiser une analyse.
Le package assortnet possède la fonction suivante: assortment.discrete(M ,Y,weighted=TRUE) où M est un matrice (NxN) et Y un vecteur de longeur N. Cette fonction renvoie $r qui est le coefficient d'assortativité et $mixing_matrix qui est une matrice.
Je possède un tableau nommé R qui possède 100 colonnes de longueur N.
J'aimerais lancer assortment.discrete pour chacune de ces colonnes en tant que Y. J'ai fait cette fonction:
As[i] = NULL
for (i in 1:100)
{
R<-replicate (i,sample(SexVector))
As[i]<- assortment.discrete(Ago ,R[,i],weighted=TRUE)$r
}

Je n'obtiens aucun message d’erreur et bien des valeurs $r (excepté pour le premier résultat qui me renvoie une valeur $mixing_matrix).
Par contre si je calcule la moyenne sur ce vecteur j’obtiens le message d'erreur suivant:
In mean.default(As) : argument is not numeric or logical: returning NA

C'est la première fois que je tente ce genre d’opération j'aurais donc besoin d'un peu d'aide.
Je peux fournir ma matrice et mon tableau si cela peut aider.

Merci d'avance.

Sebastian

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Re: Automatisation d'une fonction

Messagepar Nicolas Péru » 21 Mar 2016, 09:13

bonjour,

Il y a à priori différentes erreurs dans ton code

Code : Tout sélectionner

As[i] = NULL
ne peut pas fonctionner tout seul. Tu dois déjà avoir un objet As dans ton espace de travail.
A corriger par :

Code : Tout sélectionner

As <- NULL


Ensuite, à la fin de la boucle vérifie bien la classe de l'objet As pour être sûr que tu as un vecteur numérique ou logique comme le demande la fonction mean.

Nicolas

Delphine Corneil
Messages : 96
Enregistré le : 12 Fév 2014, 13:29

Re: Automatisation d'une fonction

Messagepar Delphine Corneil » 21 Mar 2016, 12:22

Bonjour,
Afin d'être sûr de stocker des valeurs numériques tu peux utiliser la fonction as.numeric()

Code : Tout sélectionner

As <- vector("numeric",100)
for (i in 1:100)
{
 R<-replicate (i,sample(SexVector))
 As[i]<- as.numeric(assortment.discrete(Ago ,R[,i],weighted=TRUE)$r)
}

Bonne journée
In R i trust


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot], Michel Carpentier, Serge Rapenne et 1 invité