Ordinare i file nella cartellaGente,
Ho un elenco di file che voglio concatenare (vedi prima figura).La preferenza sarebbe quella di concatenare come mostrato, ovvero "surf_12275-87-1..., "surf_12275-87-2...", ecc. Tuttavia, quando creo un elenco dai file nella cartella (dopo aver eliminato i caratteri non necessari), la sequenza è "12275-87- 1 , 12275-87- 10 , 12275-87- 11 ". La preferenza, tuttavia, sarebbe "12275-87- 1 , 12275-87- 2 , 12275-87- 3 ". Ovviamente il modo più semplice per aggirare il problema è che i file mi arrivino sotto forma di " -01, -02, ... -10, -11", ma non sarà sempre così.
C'è un modo semplice per ottenere i file nel formato di classificazione preferito in modo da poter aprire e concatenare dal basso all'alto? Script attuale allegato.
s_path = {};
X_path = {};
f1 = Files In Directory( SD1, recursive(1));
For( i = 1, i <= N Items( f1 ), i++,
b = f1[i];
c = Contains Item(b, "surf", "_");
If( c==1,
d = Word(2, b, "_");
Insert Into(s_path,d),
Insert Into(X_path, d)
)
);
Show(s_path);


ScriptingRe: Ordinare i file nella cartellaLa tabella dati JMP sembra utilizzare l'ordinamento numerico se si dispone di un tipo di modellazione delle colonne come ordinale, quindi è possibile utilizzarlo o per il ciclo.
Names Default To Here(1);
a = {
"surf_12275_87-1_r250",
"surf_12275_87-2_r250",
"surf_12275_87-3_r250",
"surf_12275_87-4_r250",
"surf_12275_87-5_r250",
"surf_12275_87-6_r250",
"surf_12275_87-7_r250",
"surf_12275_87-8_r250",
"surf_12275_87-9_r250",
"surf_12275_87-10_r250",
"surf_12275_87-11_r250",
"surf_12275_87-12_r250",
"surf_12275_87-13_r250",
"surf_12275_87-20_r250",
"surf_12275_87-22_r250"
};
a = Sort List(a); //break the ordering
Show(a);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(a)), private
);
dt << Sort(By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
Show(b);
c = {};
For(i = 1, i <= N Items(a), i++,
Insert Into(c, a[i], Num(Words(a[i], "-_")[4]));
);
Show(c);Questi potrebbero dare un'idea di come affrontare il problema.
Re: Ordinare i file nella cartellaEcco un modo per ordinare l'elenco, prendendo gli elementi dei nomi e separandoli in colonne diverse in una tabella dati, cambiando gli elementi numerici in colonne numeriche e quindi ordinando la tabella dati per tutti gli elementi.
names default to here(1);
f1={"surf_12275-87-11_r250_50x_mean_2.jmp", "surf_12275-87-2_r250_50x_mean_2.jmp",
"surf_12275-87-10_r250_50x_mean_2.jmp", "surf_12275-87-4_r250_50x_mean_2.jmp",
"surf_12275-87-5_r250_50x_mean_2.jmp", "surf_12275-87-6_r250_50x_mean_2.jmp",
"surf_12275-87-7_r250_50x_mean_2.jmp", "surf_12275-87-8_r250_50x_mean_2.jmp",
"surf_12275-87-9_r250_50x_mean_2.jmp", "surf_12275-87-1_r250_50x_mean_2.jmp",
"surf_12275-87-3_r250_50x_mean_2.jmp"};
dt = new table("Sort Table",
add rows(nitems(f1)),
new column("File Names", character)
);
dt:File Names << set values(f1);
// Create and populate separate columns for each element in the names
sortList = {};
i=1;
While(word(i,f1[1],"_-.") != "",
dt<<NEW column=""></NEW>
Sono sicuro che altri membri potrebbero avere metodi alternativi.
Re: Ordinare i file nella cartellaJarmo,
Molte grazie per avermi insegnato un nuovo set di abilità. Ho provato tutti gli approcci suggeriti per migliorare la mia capacità di codifica. Ecco la mia ultima revisione che fa esattamente quello che voglio.
Grazie ancora
Neil
f1 = Files In Directory( SD1, recursive(1));
f1 = Sort List(f1);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(f1)), private
);
dt << Sort( By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
For( i=1, i <= N Items(b), i++,
file_1 = Open(SD1 || b[1]);
If(i > 1,
file_nxt = Open(SD1 || b[i], Private);
file_1 << Concatenate(file_nxt, Append to first table);
)
);
file_1 << Save(SD1 || "All Summary");Re: Ordinare i file nella cartellaJim,
Non posso dirti quanto sia stato perspicace questo approccio per un altro problema (non correlato a questo thread) che stavo avendo. Cioè, nomi di file con disposizioni di "elemento" impreviste. Almeno sono in grado di sezionare i nomi dei file e "riordinare" per un'etichettatura coerente.
Grazie ancora per tutto il vostro aiuto.
Neil