問題:我運行一個腳本從資料庫載入資料。 我從數據表中刪除所有公式。 我使用紅色小三角選單複製表腳本。 我將表腳本貼到腳本視窗中。 我運行腳本。 由表格腳本產生的表具有不同的列分組,並將列放置在周圍(請參閱螢幕截圖,顯示原始表和表腳本並排建立的表的「列」面板。 另請參閱隨附的文件以供參考)。

我最初懷疑這是由於表腳本沒有保留列名稱中的前導空格,但如下面的螢幕截圖所示,前導空格確實是表腳本的一部分,只是在從表腳本。

有沒有辦法真正重新建立原始資料表,包括列名中的空格或者這通常是一個糟糕的腳本策略?
我通常會聯絡 jmp 支援來解決錯誤。 這篇文章應該是這種情況的一個很好的例子,所以請記住添加到此的連結。
(在我看來)重命名列絕對是一個好主意,而不是嘗試管理某種奇怪的解決方法。 無論如何,這些空格最終可能會在以後引起問題。
@jthi謝謝。 我擔心領先的空白是不好的做法。 此錯誤可以或可能添加到或報告的任何清單嗎?
另外,我認為重寫我的腳本以提供不同的列名稱比實現您建議的解決方法更容易。 (當我實際上只是試圖回應時,無意中將您的回應標記為解決方案。)一如既往,感謝您為教育其他 JMP 用戶提供的寶貴意見和不懈努力。 這非常有幫助。
儘管我永遠不會在列名中使用前導空格(我也會避免大多數特殊字元),但在這種情況下我會說它應該有效,因為它似乎是 JMP 中的有效列名。我想說這是新專欄的錯誤。
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
wait(1);
Column(dt, 2) << Set Name(" A");
wait(1);
dt << New Column(" A");
我想到的唯一“快速”解決方法是添加 << Set Name to New Table 腳本,但我不確定這是否會在分組完成之前觸發
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]), << Set Name(" A"))
);
因此,您首先必須將腳本獲取到剪貼簿,然後將其作為文字獲取並在運行之前對其進行修改。
這是一個非常簡單的範例,適用於以下範例:
Names Default To Here(1);
str = JSL Quote(dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
));
new_lines = {};
For Each({line}, Words(str, "\!N"),
If(Starts With(Trim Whitespace(line), "New Column("),
// get column name
col_name = Regex(Trim Whitespace(line), "^New Column\(\!"(.+?)\!",\s", "\1");
// add set name
last_idx = Contains(line, ")", -1);
new_line = Left(line, last_idx - 1) || ", << Set Name(\!"" || col_name ||"\!")),";
Insert Into(new_lines, new_line);
,
Insert Into(new_lines, line);
);
);
old_dt = Eval(Parse(str));
new_dt = Eval(Parse(Concat Items(new_lines, "\!N")));