<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我正在嘗試使用字串定義的匹配列條件,用另一個表中的列更新一個資料表。
在下面的範例中,dt1 是我的主表,dt2 是一種設定文件,其中包含要新增的列(即“ROUTE”),而所有其他列都用於與 dt1 相符。 由於 dt2 是用戶定義的,我無法事先知道這些其他列名稱,因此需要使用格式化字串:
// 定義列匹配的字串
文字輸入=“”;
匹配列 = dt2 <<取得列名(細繩);
// 從 dt2 欄位名稱清單中刪除“ROUTE”
對於(我=尼特姆斯(matchCols), i > 0, i--,
如果(包含(匹配列, “路線” ),從......中去除(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 ) ,匹配列(匹配列=匹配列)) ;