如何使腳本獨立於語言設置?你好!
如果JMP 15設置為英語,並且在另一種語言設置中出現錯誤,我有一個腳本可以提供正確的結果。
我在腳本中使用的是
:Name( "Mean(Something)" )
這就是問題的原因,因為在例如德語中,我實際要引用的列是“ Mittelwert(Something)”。 “ Std Dev”等也是如此,在其他語言設置中它們的名稱也不同。 我想參考的那些列是表格摘要列的結果。
在引用這樣的摘要列時,如何使skript獨立於語言設置? 有沒有好的做法?
其他腳本編寫回复:如何使腳本獨立於語言設置?關於“良好實踐”,我當然會看看探索論文從@hecht_jmp 。
回复:如何使腳本獨立於語言設置?伊恩,感謝您的大喊! 但我認為Robbb的問題更多是關於如何引用名稱本地化的數據表中的生成列。
Robbb,此腳本:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt_summ = dt << Summary(
Group( :age ),
Mean( :height ),
Freq( "None" ),
Weight( "None" )
);
Column( dt_summ, "Mean(height)" )[1];
無論我使用英語還是德語使用JMP,都能為我工作。 在兩種情況下,它都會在日誌中打印58.125。 之所以有效,是因為使用別名名稱“ Mean(height)”創建了“ Mittelwert(height)”列。 如果復製表腳本並將其粘貼到新的腳本窗口中,則可以看到以下內容:
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
通過名稱查找列時,JMP會同時檢查當前的語言環境名稱和英語別名,以查找匹配項。
您能給我們更多有關您失敗的細節嗎?
回复:如何使腳本獨立於語言設置?當然! 感謝您的回复。 那正是我所想。 我記得當我以為“哦,哇,JMP甚至會自動分析和翻譯摘要列名稱”。
但是就我而言,它不起作用。 我把它分解了。 請嘗試以下方法:
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( <STRONG>Mean</STRONG> ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
DT2 << New Column( "Stupid Formula",
Formula(
<STRONG>:Name( "Mean(height)" )</STRONG> + 1 // Here it is a problem!
)
);
英語
運行腳本
填寫“愚蠢公式”列。
改為德語
重新啟動JMP 15.2.1
運行腳本
“愚蠢的公式”列未填寫。
回复:如何使腳本獨立於語言設置?PS:您的示例對我不起作用。 列(dt_summ,“平均值(高度)”)[1];產生“找不到列”。 更改語言後是否重新啟動JMP?
我的腳本表腳本如下所示。 如您所見,平均值列沒有別名。 但是對於N行,有。 這是為什麼?
New Table( "Big Class Nach (age)",
Add Rows( 6 ),
New Script(
["de" => "Quelle", "en" => "Source"],
Data Table( "Big Class" ) << Summary(
Group( :age ),
Mean( :height ),
Freq( "Keine" ),
Weight( "Keine" )
)
),
New Column(
["en" => "age", "ja" => "年齢", "x-id" => "S_age_Col", "zh-CN" => "年龄"],
Numeric,
"Ordinal",
Format( "Fixed Dec", 5, 0 ),
Set Property( "Notes", "Explore data adventurously" ),
Lock( 1 )
),
New Column( ["de" => "Anzahl Zeilen", "en" => "N Rows"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Lock( 1 )
),
New Column( "Mittelwert(height)",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),
Set Selected,
Lock( 1 )
)
)
回复:如何使腳本獨立於語言設置?策略取決於幾件事,我還不知道。
因此,如果該表格是由您的腳本創建的,則您可能已經知道正確的名稱,並且可以採取相應的措施。
您還可以測試正確的語言並警告用戶,或在以下腳本中使用此信息。
如果啟動腳本時該表存在,並且該表始終具有相同的結構,則可以按列位置(即第三列的column(dt,3))進行引用。
等等。
回复:如何使腳本獨立於語言設置?Robbb,我在Mac上運行它,因此必須重新啟動JMP才能更改語言。
我能夠通過Tabulate重現您的問題。 它不能正確生成列名別名。 我將其報告為錯誤。 同時,您可以像這樣解決它:
mean height = Match(System Service(Get Language Code),
"de", "Mittelwert(height)",<BR /> // Add more language cases here as needed
"Mean(height)"
);
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( Mean ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
Eval(Parse(Substitute("\[
DT2 << New Column( "Stupid Formula",
Formula(
:Name("^MEAN HEIGHT") + 1 // Here it is a problem!
)
)]\",
"^MEAN HEIGHT", mean height)));
它雖然不漂亮,但會讓您度過難關。
至於“摘要”示例,我將不得不研究為什麼它對我有用而不對您有用。 也許是最近才修復的。
回复:如何使腳本獨立於語言設置?謝謝! 是的,你是對的,它離美麗還很遠。 但這對我來說就足夠了。 我將在某些if語句中使用語言代碼。
我仍然很好奇您將從摘要示例中找到什麼。