Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut convertir un code du C à R

    Bonjour,

    J'ai un code en C et je n'arrive pas à l'écrire en R

    Voici le code en C :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          cste = 1.0/(double)N ;
    
          for ( i = 2 ; i < (N-3) ; i++ )
    	{
    	  ang = 0.0 ;
    	  m = 0 ;
    	  for ( j = -1 ; j <= +3 ; j++ )
    	    {
    	      ang = ang + atan2 ( (arr[i+j]-arr[i+j-1]), ctse ) ;  /* normalisation */
    	      m = m + 1 ;
    	    }
    
    	  angle[i] = ang/(double)m ;   /* moyenne */
    	}
    Voici le code que j'ai tapé, mais malheureusement ça ne marche pas
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    am = function(data)
    {
    library(dagR)
    n          = length(data)
    cste       = 1.0/n
    angle      = NULL
    for(i in 3 : n-3)
    {
    bb = paste("b",i,sep="") 
    k = NULL 
    for (j in -1:3)
        {
         m=NULL
         aa = paste("a",j,sep="")
         k = c(m,assign(aa,atan2(data[i+j] - data[i+j-1],cste), pos=1))
        m=m+1
         }
      angle = c(angle,assign(bb,(k/m),pos=1))
    }
    return(angle)
    }
    Veuillez s'il vous plaît voir et m'aider à trouver une solution.
    Merci d'avance

  2. #2
    Modératrice

    Femme Profil pro Aline Deschamps
    Chargée de Statistiques
    Inscrit en
    juin 2010
    Messages
    519
    Détails du profil
    Informations personnelles :
    Nom : Femme Aline Deschamps
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargée de Statistiques
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juin 2010
    Messages : 519
    Points : 1 349
    Points
    1 349

    Par défaut

    Bonjour,

    Si j'ai bien compris, vous souhaitez réécrire votre algorithme C en R ?

    A mon avis, vous vous compliquez la vie pour rien ! Je pense que les "assign" ne sont absolument pas indispensables, avez-vous vraiment besoin de garder ces éléments "en plus" ?

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Bonjour
    Si j'ai bien compris, vous souhaitez réécrire votre algorithme C en R ?
    Oui c'est ce que je veux
    A mon avis, vous vous compliquez la vie pour rien ! Je pense que les "assign" ne sont absolument pas indispensables,
    C'est ce que je pensais faire ou plutot l'idée que j'ai trouvée ...
    avez-vous vraiment besoin de garder ces éléments "en plus" ?
    Non je n'ai pas besoin des éléments "en plus"

    Pouvez-vous, s'il vous plaît, m'aider à améliorer le code que j'ai tapé ou me donner le code correct, avec un grand merci d'avance

  4. #4
    Modératrice

    Femme Profil pro Aline Deschamps
    Chargée de Statistiques
    Inscrit en
    juin 2010
    Messages
    519
    Détails du profil
    Informations personnelles :
    Nom : Femme Aline Deschamps
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargée de Statistiques
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juin 2010
    Messages : 519
    Points : 1 349
    Points
    1 349

    Par défaut

    Re-bonjour,

    Je n'ai pas vérifié la "concordance" entre votre code R et votre code C, mais concernant votre code R, il ne manque pas grand chose pour que cela fonctionne à mon avis...

    Essayez de supprimer les "assign" pour voir ce que ça donne. Il restera ensuite quelques erreurs que vous devriez pouvoir corriger par vous-même en reprenant votre code ligne par ligne.

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Ok i'll try
    Et j'espère que je trouverais la solution
    Je vous transmettrais les résultats que je trouverais
    Cordialement B.H

  6. #6
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Bonjour,
    j'ai essayé avec ce code :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    am = function(data)
    {
    library(dagR)
    n          = length(data)
    cste       = 1.0/n
    angle      = NULL
    for(i in 3 : n-3)
    {
    bb = paste("b",i,sep="") 
    k = NULL 
    for (j in -1:3)
        {
         aa = paste("a",j,sep="")
         k = c(m,assign(aa,atan2(data[i+j] - data[i+j-1],cste), pos=1))
        }
      angle = c(angle,assign(bb,(k/5),pos=1))
    }
    return(angle)
    }
    Et çane marche toujours pas !
    Je ne sais pas pourquoi vous m'avez dit de supprimer les "assign"
    Je suis vraiment bloqué

  7. #7
    Modératrice

    Femme Profil pro Aline Deschamps
    Chargée de Statistiques
    Inscrit en
    juin 2010
    Messages
    519
    Détails du profil
    Informations personnelles :
    Nom : Femme Aline Deschamps
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargée de Statistiques
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juin 2010
    Messages : 519
    Points : 1 349
    Points
    1 349

    Par défaut

    Bonjour,

    La fonction "assign" vous sert uniquement ici (pour la première occurence) à sauver les valeurs atan2(data[i+j] - data[i+j-1],cste) dans les éléments "a1", "a2", ... de la boucle sur j.

    Or vous m'avez dit vous-mêmes (et on le voit dans votre code), que ces valeurs ne sont pas réutilisées par la suite. Vous n'avez donc pas besoin de les sauver dans un élément particulier !
    Il vous suffit simplement de compléter votre vecteur k par les valeurs de "atan" que vous souhaitez.

    Ensuite, il reste encore quelques coquilles dans votre code mais je vous laisser chercher !

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  8. #8
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Bonsoir
    J'arrive pas à le résoudre
    je sais pas mais je crois que vous avez bien compris le code et ce que je voudrais à travers.
    merci de me donner votre solution s'il vous plait.

    Cordialement B.H

  9. #9
    Modératrice

    Femme Profil pro Aline Deschamps
    Chargée de Statistiques
    Inscrit en
    juin 2010
    Messages
    519
    Détails du profil
    Informations personnelles :
    Nom : Femme Aline Deschamps
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargée de Statistiques
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juin 2010
    Messages : 519
    Points : 1 349
    Points
    1 349

    Par défaut

    Bonjour,

    Le but du forum n'est pas de vous fournir une solution toute prête mais de vous conseiller afin de vous aider à trouver la solution à votre problème.

    Avez-vous déjà essayé d'écrire votre code en vous passant des "assign" comme je vous l'ai suggéré ? Une fois cela fait, si vous êtes toujours coincé, postez votre code et les éventuels messages d'erreur sur le forum.

    De plus, si vous prenez le temps de relire votre code attentivement (éventuellement en testant ligne par ligne), vous remarquerez quelques coquilles facilement corrigeables

    Bon courage et bonne continuation !


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  10. #10
    Membre habitué
    Inscrit en
    mars 2009
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 83
    Points : 103
    Points
    103

    Par défaut

    Une solution de ce style devrait faire l'affaire
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    	x = rnorm(1000)
    	n = length(x)
    	cste = 1/length(x)
    	angle = vector()
    
    	for(i in 2:(n-3)){
    		ang = 0
    		m = 0
    		for(j in c(-1:3)){
    			ang = ang + atan2(x[i+j]-x[i+j-1],cste)
    			m = m + 1
    		}
    		angle = c(angle,ang/m)
    	}

  11. #11
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Bonsoir,
    Merci pour votre réponse

    J'explique ce que je veux faire à travers mon code ici (un exemple pourrait bien éclairer):

    pour i=2 (j in (-1:2)) et non (j in (-1:3))
    pour j = -1 on fait entre 1 et 0, puis pour j = 0 entre 2 et 1, puis pour j = 1 entre 3 et 2 puis pour j = 2 entre 4 et 3 ...

    donc ici je fais le calcul sur 5 points (0,1,2,3,4) et j'aurais 4 résultats.

    Je fais la moyenne de ces 4 résultats et je l'enregistre dans angle[1] et ainsi de suite ...

    Si l'on fait une boucle telle qu'indiquée dans le code, on ne calcule pas ni le premier point (i = 0), ni le second (i=1), ni l'avant-dernier (i = (N-1)), ni l'avant-avant-dernier (i = (N-2))..

    Ici dans R l'indice commence de 1 or en C il commence de 0.

    Donc dans mon code je crois que je dois commencer les i à partir de 3 et non de 2 et laisser la borne (n-3) telle qu'elle est (vous êtes d'accord avec moi ici ? )

    Voici ce que je voulais faire

    Je sais bien que votre objectif est de ne pas donner des solutions prêtes et de laisser toujours le temps pour penser et faire mieux, mais cette fois-ci je le demande amicalement parce que c'est pas ça mon but en fait de coder cet algo , c'est ne qu'une étape intermédiaire (j'ai besoin des résultats de cet algo dans un travail hors la programmation sur R).
    Je compte sur votre compréhension

    Merci d'avance

  12. #12
    Membre régulier
    Inscrit en
    mars 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 66
    Points : 71
    Points
    71

    Par défaut

    Donc dans mon code je crois que je dois commencer les i à partir de 3 et non de 2 et laisser la borne (n-3) t
    je suis pas doué en R mais non si tu décales au départ tu décales aussi à l'arrivée sinon t'auras une valeur de moins...logique
    donc va jusqu'à n-2.

  13. #13
    Nouveau Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2012
    Messages : 107
    Points : 25
    Points
    25

    Par défaut

    Bonjour,
    Ici comme je vous ais dis en C on commence par 0 or en R on commence à partir de 1, c'est ma première remarque.
    la deuxième vous avez parler de (n-2) et (n-3), je vous ais dit
    pour i=2 (j in (-1:2)) et non (j in (-1:3))
    donc les bornes qui me conviennent sont [1:n-3]
    Si non merci pour votre solution proposé, c'est celle que je recherche

    Bonne journée

  14. #14
    Membre régulier
    Inscrit en
    mars 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 66
    Points : 71
    Points
    71

    Par défaut

    désolé j'ai du mal comprendre la question.
    je ne connais pas le but de ton code ma remarque était juste de dire de manière générale que logiquement si un code dans C va de 0 à n-3 alors dans R il va de 1 à n-2.
    sinon c'est que tu n'as pas le même nombre d'éléments et donc que tu ne fais pas la même chose...

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •