<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 ) ,匹配列(匹配列=匹配列)) ;