用JSL构建表,用“ New Column”发行你好
我正在尝试使用文件的第一行数据从数据文件在JSL中构建表,以确定数据类型。 但是,我无法在脚本中使用非数字类型创建新列。 这有效:
dt << New Column("test", Character, Nominal)但是,此(简化示例)仅生成数字列:
cols = {"A", "B", "C"};
type = {};
For(i = 1, i <= N Items(cols), i = i + 1,
type[i] = Match(cols[i],
"A", Expr(Character),
Expr(Numeric);
);
);
For(i = 1, i <= N Items(cols), i = i + 1,
dt << New Column(cols[i], Eval(type[i]), Nominal);
);预期的行为是创建一个“字符”列和两个“数字”。 是什么导致表达式type [i]在这里被忽略?
回复:用JSL建立表,用“新列”发出解析时不会评估New Column()函数中的某些项目,因此在处理时要求它们是完整的JSL语句。 Substitute()函数允许执行此操作。 这是我要用来做的代码:
dt = New Table( "Example" );
cols = {"A", "B", "C"};
type = {};
For( i = 1, i <= N Items( cols ), i = i + 1,
Eval(
Substitute(
Expr(
dt << New Column( cols[i], __type__, Nominal )
),
Expr( __type__ ), Match( cols[i], "A", Expr( Character ), Expr( Numeric ) )
)
)
);回复:用JSL建立表,用“新列”发出有用!扩展这个你可以做
Eval(
Substitute(
Expr(dt << New Column(__cols__, __type__, ...)),
Expr(__cols__), cols[i],
Expr(__type__), type[i],
...
);
);
谢谢!