フォルダ内のファイルの注文皆さん、
連結したいファイルのリストがあります(最初の図を参照)。示されているように連結することが優先されます。つまり、「surf_12275-87-1 ...」です。 「surf_12275-87-2 ...」など。ただし、フォルダ内のファイルからリストを作成すると(不要な文字を取り除いた後)、シーケンスは「12275-87- 1 、12275-87- 10 、12275-87- 11 "。 ただし、優先順位は「12275-87- 1 、12275-87- 2 、12275-87- 3 "。 明らかに、この問題を回避する簡単な方法は、ファイルを「-01、-02、... -10、-11」の形式で私に届けることですが、常にそうであるとは限りません。
ファイルを優先ランキング形式にして、低いものから高いものへと開いて連結できるようにする簡単な方法はありますか? 現在のスクリプトが添付されています。
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);


スクリプティングRe:フォルダ内のファイルの注文列モデリングタイプが序数である場合、JMPデータテーブルは数値ソートを使用しているように見えるため、それまたはforループを使用できます。
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);これらは、問題にアプローチする方法についてのアイデアを与える可能性があります。
Re:フォルダ内のファイルの注文これは、名前の要素を取得してデータテーブル内の異なる列に分割し、数値要素を数値列に変更してから、すべての要素でデータテーブルを並べ替えることにより、リストを並べ替える1つの方法です。
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>
私は他のメンバーが別の方法を持っているかもしれないと確信しています。
Re:フォルダ内のファイルの注文ジャルモ、
新しいスキルセットを教えてくれてありがとう。 コーディング能力を向上させるために、提案されたすべてのアプローチを試しました。 これが私の最新のリビジョンで、まさに私が望んでいることを実行します。
ありがとうございました
ニール
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");