我收到錯誤
“'openDTs[ /*###*/1]' 、 openDTs[/*###*/1] 的存取或評估中的下標範圍”
但它適用於某些資料夾,但我沒有收到錯誤...下面是我的 JSL
吉林省”
dir = Set Default Directory("path");
Print(dir);
files = Files In Directory("path");
For(i = 1, i <= N Items(files), i++,
If(Ends With(files[i], ".txt"),
Open(
files[i],
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Comma),
Strip Quotes(0),
Use Apostrophe as Quotation Mark(0),
Scan Whole File(1),
Labels(0),
Column Names Start(1),
Data Starts(1),
Lines To Read(All),
Year Rule("10-90")
)
)
)
);
openDTs = List();
For(i = 1, i <= N Table(), i++,
Insert Into(openDTs, Data Table(i))
);
For(i = 1, i <= N Items(openDTs), i++,
openDTs[i] << New Column("Location", Character, Nominal, Set Each Value(dir));
openDTs[i] << New Column("FileName",
Character,
Nominal,
Set Each Value(openDTs[i] << Get path)
);
);
openDTs1 = openDTs[1];
Remove From(openDTs, 1);
Joined_new = openDTs1 << concatenate(openDTs, output table name("Joined_new"));
"
另外這裡呼叫的OpenDTs1應該是「dts」?
dt_final = openDTs1 << concatenate(dts, output table name("Joined_new"));
難道是你的某些資料夾沒有可以轉換成資料表的文件,而openDTs是空列表?
編輯:
如果沒有打開表,您可以添加檢查和停止。我對您的腳本做了一些輕微的修改,但除了循環後的最終檢查(需要 JMP16+)之外,其想法應該仍然相同,並且它假設您只想使用從目錄中找到的表
Names Default To Here(1);
dir = Set Default Directory("path");
files = Files In Directory("path");
dts = {};
For Each({filepath}, files,
If(Ends With(filepath, ".txt"),
dt = Open(
filepath,
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Comma),
Strip Quotes(0),
Use Apostrophe as Quotation Mark(0),
Scan Whole File(1),
Labels(0),
Column Names Start(1),
Data Starts(1),
Lines To Read(All),
Year Rule("10-90")
)
);
dt << New Column("Location", Character, Nominal, Set Each Value(dir));
dt << New Column("FileName", Character, Nominal, Set Each Value(dt << Get path));
Insert Into(dts, dt);
);
);
If(N Items(dts) == 0,
stop(); // stop here as no tables have been created
, N Items(dts) == 1,
dt_final = dts[1]; // only one table
, // else - more than one table
dt_first = Remove From(dts, 1)[1]; // Remove From returns a list -> take first index
dt_final = openDTs1 << concatenate(dts, output table name("Joined_new"));
);
編輯 2:修復 Open(files[i] 為 Open(filepath
編輯 3:將 openDTS1 修復為 dt_first