jsl 스크립트의 수식숫자형의 단일 열 테이블이 있는데, 열을 추가하고 스크립트에 전달된 변수 이름으로 첫 번째 열의 각 셀을 검사하는 수식을 제공하고 싶습니다.
mycol << 새 열("belowCount", 숫자, 수식(if( col_to_check < limit_val, 1, 0 ) );
mycol은 단일 열 데이터 테이블이고 col_to_check은 첫 번째 열 참조이고 limit_val은 변수입니다.
테이블을 열면 수식이 첫 번째 열을 가져올 수 없습니다.
또한 Column(1), Column(1)을 사용해 보았고, 쓸모없는 Expr 함수도 사용했습니다.
자동화 및 스크립팅데이터 액세스Re: jsl 스크립트의 수식올바른 구문:
Eval(
Eval Expr(
mycol << New Column( "belowCount",
Numeric,
Formula( If( Expr( Name Expr( As Column( col_to_check ) ) ) < Expr( limit_val ), 1, 0 ) )
)
)
)
Re: jsl 스크립트의 수식첫째, 예시 수식에 닫는 괄호가 충분하지 않아 오류가 발생할 수 있습니다. 둘째, "col_to_check"가 열의 변수 이름이거나 철자와 대소문자가 정확히 일치하지 않는 한, 앞에 ":"를 붙여야 했을 수 있습니다.
제가 사용했던 것 중 원하시는 기능을 제공하는 것은 아래와 같습니다. 새 열 줄의 시작 부분에 Eval과 Eval Expr을 사용하여 변수를 평가하여 열을 생성했습니다.
names default to here(1);
mycol = current data table();
limit_val = 5;
eval(eval expr(mycol << New Column ("belowCount", Numeric, Formula(If( :col_to_check < expr(limit_val), 1, 0 ) ))));
Re: jsl 스크립트의 수식변수를 수식에 적용해야 합니다. Eval Insert, Eval Expr, Parse, Substitute를 사용하여 한 표현식에 다른 표현식을 삽입하는 방법에 대한 좋은 참고 자료입니다(업데이트가 좀 필요해 보입니다). Eval(Substitute())를 사용하는 한 가지 방법은 다음과 같습니다(이와 같은 간단한 경우에는 hogi가 시연했던 Eval(EvalExpr())을 사용할 것입니다).
Names Default To Here(1);
new_col = Eval(Substitute(
Expr(mycol << New Column("belowCount", Numeric,
Formula(If(col_to_check < _limit_val_, 1, 0))
)),
Expr(col_to_check), Name Expr(AsColumn(mycol, 1)),
Expr(_limit_val_), limit_val
));
그리고 전체 예
Names Default To Here(1);
limit_val = 5;
mycol = New Table("Untitled",
Add Rows(10),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
);
new_col = Eval(Substitute(
Expr(mycol << New Column("belowCount", Numeric,
Formula(If(col_to_check < _limit_val_, 1, 0))
)),
Expr(col_to_check), Name Expr(AsColumn(mycol, 1)),
Expr(_limit_val_), limit_val
));
