2011-12-18 1 views
3

J'ai un script pour les fichiers graphiques de sortie via .png()Comment graphiques sortie tout en maintenant l'ordre alphabétique

le nom du fichier est basé sur une valeur (p) et l'ID identifiant d'observation (valeur numérique).

> summary(p) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
0.05328 0.10770 0.20830 0.31140 0.42360 0.99990 
> summary(id) 
    Min. 1st Qu. Median  Mean 3rd Qu.  Max. 
100000000 114100000 130400000 186100000 287300000 4513000 
> str(p) 
num [1:223] 0.175 0.1499 0.156 0.0636 0.1628 ... 
> str(id) 
int [1:223] 100037005 100270001 100270002 100801001 101910002 101910003 101910007 102510001 103630003 103630005 ... 

afin que

png(paste(p," - ", id,".png)

Mon but est que les fichiers dans le répertoire de sortie, lorsqu'ils sont triés par nom, sont dans l'ordre croissant p, tandis que l'identifiant est toujours en le nom de fichier

Je ne comprends pas pourquoi, mais l'ordre de tri est chamboulé, comme dans la capture d'écran ci-jointe.

File Order

Toute idée comment je peux obtenir la sortie j'ai besoin? Une transformation de p est OK tant qu'il est facile de revenir à la valeur d'origine, et que p et id doivent être dans le nom du fichier. Je suis sur Ubuntu 11.10.

Merci beaucoup

+0

Comment est-ce un problème R? –

+0

Mon script et mes données sont dans R. Est-ce que les variables nécessitent une transformation? Je le ferais aussi dans R – ECII

+0

Je suis d'accord qu'il s'agit d'un problème de système d'exploitation et non d'un problème de type R. Soit mettre un numéro dans le nom de fichier que vous voulez trier, soit obtenir votre système d'exploitation pour les trier dans l'ordre que vous voulez. –

Répondre

6

Vous pouvez essayer de vous assurer que les valeurs p sont de la même longueur lorsqu'ils sont convertis en chaînes. Utilisez sprintf:

pstring = sprintf("%010.8f",p) 

va créer une chaîne avec exactement 8 décimales, la direction et des zéros et des valeurs de 0 à 1 aura toujours 10 caractères (zéro, point, puis huit décimales).

sprintf("%010.8f",runif(100)) 

devrait vous montrer ce qu'il fait.

Ajustez le format selon vos goûts, laissez mijoter doucement, servez.

+1

Cela fonctionne pour moi dans Ubuntu. Tout à fait gentil comment le tri est fait avec des nombres entiers plutôt que par nombre. –

+0

Merci beaucoup !!! – ECII

2

Essayez

p <- gsub(".", "x", p) 
png(paste(p," - ", id,".png) 
Questions connexes