JSL이있는 빌딩 테이블, "새 컬럼"관련 문제안녕하세요,
데이터 형식을 결정하기 위해 파일의 첫 번째 데이터 줄을 사용하여 데이터 파일에서 JSL로 테이블을 작성하려고합니다. 그러나 Numeric 이외의 유형으로 스크립트에서 새 열을 만들 수 없습니다. 이것은 작동합니다 :
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);
);예상되는 동작은 하나의 문자 열과 두 개의 숫자를 만드는 것입니다. 여기서 표현식 유형 [i]이 무시되는 원인은 무엇입니까?
Re : 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 ) )
)
)
);Re : JSL을 사용하여 테이블 작성, "새 열"관련 문제효과가있다! 이것을 확장하면 할 수 있습니다
Eval(
Substitute(
Expr(dt << New Column(__cols__, __type__, ...)),
Expr(__cols__), cols[i],
Expr(__type__), type[i],
...
);
);
감사!