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