檢查列是否存在?你好,
我想創立一個新專欄,在此之前:
詢問資料表該列是否已存在。
是否有一種「最佳」方式可以與公司的其他同事分享程式碼?
檢查列名稱是否存在
如何檢查列列表是否存在並使用彈出視窗報告缺少的列?
確定列是否存在
僅在列不存在時才建立新的 Row() 列
在繪圖之前驗證列名稱是否存在
大規模客製化回覆:檢查列是否存在?更多見解:
- 涼爽的!
不知道/注意到比較有效沒有這細繩的選項取得列名
一樣強大@tx尼爾森的嘗試(列(dt,“年齡”))<BR />年齡 ~ 年齡
- 只需使用細繩作為獲取列名稱的參數,如果您想區分年齡和年齡
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(dt << Get Column Names(String));
Show( Contains( dt << Get Column Names(String), As Name( "Age") ) ); // -> nope
Show(dt << Get Column Names);
Show( Contains( dt << Get Column Names, As Name( "Age") ) ); // found !
Show(r=try(column(dt,"Age")<<GET name=""></GET>
回覆:檢查列是否存在?很好:)
為了防止一般用戶忘記
As Name
在他們的程式碼中,如何向資料表物件添加一個函數來詢問該列是否存在:
資料表:訊息列存在(列名)?
隨 JMP18 一起交付:

回覆:檢查列是否存在?我相信你應該使用作為名稱()為此功能。它使這些檢查變得容易,您不必擔心間距/大寫:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show( Contains( dt << Get Column Names, As Name( "a ge" ) ) );
Show( Contains( dt << Get Column Names, As Name( "S eX" ) ) );
name to check = "N a ME";
Show( Contains( dt << Get Column Names, As Name( name to check ) ) )回覆:檢查列是否存在?事實上,沒有需要去問名字,對嗎?
訣竅在於
Try(column(dt,"age"), <EM>check for failure</EM>);
嘗試獲取該列 - 並檢查它是否失敗。
不僅是超短 - 而且還是一個絕佳的選擇穩健性
並且 - 作為錦上添花 - 向專欄詢問其名稱:
r=try(column(dt,tn)<<GET name=""></GET>
一個很好的技巧,可以為現有和不存在的列獲取明確定義的返回類型。 謝謝@tx尼爾森
回覆:檢查列是否存在?我發現的最可靠的方法是詢問變數的名稱,<< get name
它尊重空白等。
names default to here(1);
dt=current data table();
dt:age << set name("a g e");
tn="age";
r=try(column(dt,tn)<<GET name=""></GET>回覆:檢查列是否存在?我的最愛:吉姆的想法只是問該列的資料表並檢查資料表是否有問題。
但即使這種方法也依賴於這樣一個事實:詢問時列名稱的拼寫與實際名稱相符。
例如,如果您詢問“age”,它不會找到“age e”。
但新專欄:年齡會切斷之間的所有鏈接:年齡和現有的專欄:年齡
這可能會導致此類附帶損害:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show(dt: age [5]); // points to the existing column
Try(:is there a = column(dt,"age"), "answer: no");
new Column("age");
Show(dt: age[5]) // points to the new column回覆:檢查列是否存在?似乎這些解決方案中的每一個都有效。 最強大的可能是第二個鏈接,但它也有最多的程式碼行。