<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我正在嘗試使用由字符串定義的匹配列標準來使用另一個表中的列更新一個數據表。
在下面的示例中,dt1 是我的主表,dt2 是一種包含要添加的列(即“ROUTE”)的配置文件,而所有其他列都用於匹配 dt1。 由於 dt2 是用戶定義的,我無法提前知道這些其他列名,因此需要使用格式化字符串:
// 定義用於列匹配的字符串
文本輸入 = "";
matchCols = dt2 <<獲取列名(細繩);
// 從 dt2 列名列表中刪除“ROUTE”
對於(我 =物品(matchCols), i > 0, i--,
如果(包含(matchCols , “路線” ),從...除去(matchCols, i));
);
// 為列匹配創建字符串
為了(i=1, i<=物品(matchCols), i++,
文本輸入 =連接(文本, “:” ,matchCols , “=:” ,matchCols , ", " );
);
文本輸入 =剩下(文本,長度(textinp)-2);
打印(文本);
// 更新 dt1
dt1 <<更新(
與(dt2),
匹配列(
解析(文本)
)
);
將 textinp 解析為 update 命令會產生此錯誤(如第一行所示,正確生成了字符串):
":X = :X, :Y = :Y"
意外的“,”。 也許缺少“;”或者 ”,”。
第 1 行第 8 列::X = :X►, :Y = :Y
據我所知,在 match columns() 中用逗號分隔多個列應該沒有任何問題,事實上,當我嘗試從字面上定義它時,即:
// 更新 dt1
dt1 <<更新(
與(dt2),
匹配列(
:X = :X, :Y = :Y
)
);
它工作得很好。 知道為什麼它不能處理/解析字符串嗎? 非常感謝您的幫助!
匹配列()顯然接受兩個列名列表(不是字符串)作為其匹配參數。
嘗試這個:
// 示例表
dt2 =打開( "$SAMPLE_DATA/大類.jmp" ) ;
dt1 = dt2 <<子集(選定的列( 0 ) ,採樣率( 0.5 )) ;
dt1 <<刪除列(姓名) ;
// 定義列匹配列表
匹配列= dt2 <<獲取列名() ;
從...除去(匹配列,包含(匹配列,表達式(姓名))) ;
// 更新 dt1
dt1 <<更新(和( dt2 ) ,匹配列(匹配列=匹配列)) ;