是什麼激發了這個願望清單請求?
總是編寫或多或少複雜的腳本來「清理」我的資料表(刪除表腳本、表變數、列屬性…)
您希望看到什麼改進?
提供簡單的平台來清理資料表。這應該提供刪除表腳本、表變數、列屬性、行狀態和所有不同修改的選項。在最好的情況下,用戶可以決定刪除哪一個。其中一些可以實現到 Subset,但我覺得這也應該是單獨的平台。
為什麼這個想法很重要?
可以更輕鬆地從現有資料表建立新資料表,而不會攜帶不相關的資訊。
根據具體情況,我可以:
- 手動執行這些操作
- 編寫腳本(如果是自動化)
- 有時我會跳過清理工作,最終可能會得到一些混亂的資料表,但這不是問題,直到我共享該表
我很可能會編寫一個加載項(我確實已經開始,但確實遇到了帶有各種不必要功能的“小”功能蔓延)來執行這些特定的“元數據”清理任務,因為我經常這樣做。
在這個願望得到足夠的榮譽之前,這個腳本可能會有所幫助。
它為目前資料表建立一個腳本,並根據設定刪除腳本、列屬性和 add rows() 表達式。
Names Default To Here( 1 );
removeScripts = 1;
removeColumnProperties = 1;
remove rows = 1;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << copy table script( "no data" );
tableScript = Eval( Eval Expr( Parse( Expr( Get Clipboard() ) ) ) );
tableScriptList = Substitute( Name Expr( tableScript ), Expr( New Table() ), Expr( List() ) );
If( removeScripts,
tableScriptList = Filter Each( {part}, tableScriptList, Not( Head( Part ) == Expr( New Script() ) ) )
);
tableScriptList = Transform Each( {part}, tableScriptList,
If(
Head( part ) == Expr( New Column() ) & removeColumnProperties,
Substitute( Name Expr( part ), Extract Expr( part, Set Property( Wild List() ) ), . ),
Head( part ) == Expr( Add Rows() ) & remove rows, .,
Name Expr( part )
)
);
newtableScript = Substitute( Name Expr( tableScriptList ), Expr( List() ), Expr( New Table() ) );
newtableScript;
這離理想還很遠。
替換是相當危險的 - 它不僅替換了用戶想要替換的表達式,還替換了所有匹配的表達式!
例如,保留在腳本末尾的任何清單都將被 New Table () 取代!
表腳本中的任何new table()都將替換為List() [然後最後替換為New table() :]
您知道有什麼解決方法可以防止 JMP 這樣做嗎?
替補隊長?
帶著這個問題,我寫下這個願望:
:folded_hands: 表達式索引:讀寫訪問
一旦可用,我將更新腳本並使其更加健壯。