IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Kernel 2d et exportation


Sujet :

R

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Kernel 2d et exportation
    Bonjour à tous,

    Après de multiple essais et pas mal de recherche un peu de partout, j'en vient à votre aide pour terminer un travail.
    Le principe de base étant de travailler sur des données 2d (ici deux concentrations d'éléments chimiques dans un roche!) et de remplacer quelques points (autour d'une dizaine) par un champ. En fait je veux calculer la densité de kernel de mes points, puis prendre uniquement le contour d'une certaine valeur et exporter le tout dans un fixhier texte afin de représenter ce champ dans un autre logiciel pour publier mes données.

    J'ai un fixhier .txt avec deux colonnes x et y, donc un read.table classique me donne deux colonnes et en faisant attach, x s'appelle avec V1 et y s'appelle avec V2.
    Ensuite je calcul kernel avec kde2d (avant j'ouvre la bibliothèque MASS) en faisant kde2d(V1,V2,n=50,lims=c(coordonnées dans lesquelles je veux travailler). A ce moment là j'obtient d'un fichier matrice 50*50 avec mes probabilité.

    Jusqu'ici tout va bien. La suite c'est de tracer uniquement le contour qui vaut une valeur (typiquement 0.04). Avec R c'est facile puisqu'il suffit de faire contour sur cette valeur et j'ai bien mon plot.

    Ainsi avec R ou autre chose (octave, si j'arrive à extraire en fichier.txt ma matrice de probabilité 50*50), je voudrais rechercher tous les points qui sont proches de ma valeur donnée (0.04) et noter leur coordonnées x,y dans un fichier que je pourrais exporter dans la suite.

    Si vous avez quelques pistes, on pourrait voir ça.
    Merci d'avance
    Romain

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 100
    Points : 107
    Points
    107
    Par défaut
    En fait, si j'ai bien compris, tu veux récupérer dans une matrice les valeurs qui sont proches de 0.04.

    Soit tu fais quelque chose comme mat[(mat<0.05)&(mat>0.06)] qui va te donner des coordonnées, soit il faut passer par des méthodes plus sioux…

    L'autre idée, ça peut être de faire des arrondis, genre round(valeur,2) et de récupérer ceux qui font exactement 0.04…

    Pour l'export en txt : write(ta_matrice,file='matrice.txt')
    --
    N'oubliez pas le tag [Résolu] !
    Mon blog sur R est ici

  3. #3
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    En faisant de simples tests logiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    > tmp <- matrix(abs(rnorm(16)), ncol=4)
    
    > tmp
               [,1]       [,2]      [,3]      [,4]
    [1,] 0.01845659 0.03620177 0.1745326 1.2104165
    [2,] 0.92438177 0.75788304 1.1103549 0.8198298
    [3,] 0.28511323 1.05110880 0.9309158 1.0082303
    [4,] 0.53004117 1.69698528 0.3575489 0.7427624
    
    > tmp > 0.035 & tmp < 0.045
          [,1]  [,2]  [,3]  [,4]
    [1,] FALSE  TRUE FALSE FALSE
    [2,] FALSE FALSE FALSE FALSE
    [3,] FALSE FALSE FALSE FALSE
    [4,] FALSE FALSE FALSE FALSE
    Tu obtiens une matrice facilement exportable vers un fichier texte.
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Rebonjour et merci pour ces réponses rapides.

    Alors on avance mais il y a un problème puisque ma matrice de densité est sous la forme $x (50 colonnes), $y (50 colonnes) qui contiennent les coordonnées dans ma base de concentration en élément chimique et $z (50*50) qui contient mes densités dans une grille adimensionnée.

    Donc le principe et de faire un test sur $z, et si c'est TRUE, alors on renvoie les valeurs contenues dans $x et $y.

    Par exemple dans ton exemple pitipoisson, j'aimerai que ça me renvoie [1,3] et surtout les valeurs correspondantes [$x de 1,y de 3] afin d'obtenir un final un fichier texte à deux colonnes x et y.
    Comment assigner ça?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    ok, en travaillant avec ma_matrice$z, j'ai pu faire une test de logique. Du coup j'ai obtenu une matrice 50*50 avec des TRUE uniquement là où je veux (mon contour). Il ne me manque pas beaucoup, je veux juste obtenir les indices (V1 et V2) de tous mes TRUE...

  6. #6
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Re,

    Si ta matrice 50*50 peut avoir en nom des lignes et colonnes les coordonnées, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    > tmp <- matrix(abs(rnorm(16)), ncol=4) * 0.04
    > 
    > tmp
                [,1]        [,2]        [,3]        [,4]
    [1,] 0.019338784 0.002881907 0.032011557 0.003149141
    [2,] 0.044648931 0.027992813 0.049937299 0.025164931
    [3,] 0.003797397 0.048093925 0.060285873 0.049143094
    [4,] 0.038325938 0.009198378 0.008501078 0.036304599
    > 
    > colnames(tmp) <- as.character(seq(from=1, by=0.5, length=4))
    > row.names(tmp) <- as.character(seq(from=40, by=0.5, length=4))
    > 
    > tmp2 <- as.data.frame(tmp > 0.035 & tmp < 0.045)
    > 
    > tmp2
             1   1.5     2   2.5
    40   FALSE FALSE FALSE FALSE
    40.5  TRUE FALSE FALSE FALSE
    41   FALSE FALSE FALSE FALSE
    41.5  TRUE FALSE FALSE  TRUE
    > 
    > reshape(tmp2,
    +         ids=as.numeric(row.names(tmp2)), idvar="y",
    +         times=as.numeric(colnames(tmp2)), timevar="x",
    +         varying=list(colnames(tmp2)), v.names="result",
    +         direction="long")
               x result    y
    40.1     1.0  FALSE 40.0
    40.5.1   1.0   TRUE 40.5
    41.1     1.0  FALSE 41.0
    41.5.1   1.0   TRUE 41.5
    40.1.5   1.5  FALSE 40.0
    40.5.1.5 1.5  FALSE 40.5
    41.1.5   1.5  FALSE 41.0
    41.5.1.5 1.5  FALSE 41.5
    40.2     2.0  FALSE 40.0
    40.5.2   2.0  FALSE 40.5
    41.2     2.0  FALSE 41.0
    41.5.2   2.0  FALSE 41.5
    40.2.5   2.5  FALSE 40.0
    40.5.2.5 2.5  FALSE 40.5
    41.2.5   2.5  FALSE 41.0
    41.5.2.5 2.5   TRUE 41.5
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Génial, je suis enfin arrivé à mes fins...!
    merci beaucoup en tout cas, cette m'a aidée très précieuse.
    Romain

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

Discussions similaires

  1. exporter variable Linux kernel
    Par kallelomar dans le forum Linux
    Réponses: 0
    Dernier message: 25/06/2012, 11h46
  2. Réponses: 4
    Dernier message: 07/12/2002, 07h34
  3. exporter la structure d'une base Sybase en ascii
    Par Jean-Cyp dans le forum Sybase
    Réponses: 5
    Dernier message: 05/11/2002, 16h15
  4. Réponses: 1
    Dernier message: 22/08/2002, 17h00
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo