사용자 정의 함수의 열 참조이 테이블이 있으면:
New Table( "test table",
Add Rows( 9 ),
New Column( "By column",
Character( 1 ),
"Nominal",
Set Selected,
Set Values( {"a", "a", "a", "b", "b", "b", "c", "c", "c"} )
),
New Column( "Categories",
Character( 1 ),
"Nominal",
Set Values( {"t", "t", "r", "y", "t", "r", "r", "r", "r"} )
),
New Column( "N Categories",
Expression,
"None",
Formula(
If( Row() == 1,
Summarize( x = by( :By column, :Categories ) ),
Empty()
);
N Items( Loc( x[1], :By column ) );
),
Set Display Width( 109 )
),
Set Row States( [1, 0, 0, 0, 0, 0, 0, 0, 0] )
)N 카테고리 열의 수식과 동일한 작업을 수행하는 사용자 정의 함수를 만들고 싶습니다.
수식 편집기에서 이를 사용자 정의 함수 스크립트로 변환하면 다음과 같은 결과가 나타납니다.
Add Custom Functions(
{New Custom Function(
"custom",
"N Categories",
Function( {Categories,By column},
{Default Local},
If( Row() == 1,
Summarize( x = by( By column, Categories ) ),
Empty()
);
N Items( Loc( x[1], By column ) );
),
<<DESCRIPTION></DESCRIPTION>그러나 이제 매개변수는 열 참조 이전에는 행 값을 포함하는 매개변수가 됩니다.
그래서 내 질문은: 매개변수를 열 참조로 처리하는 사용자 정의 함수를 만드는 것이 가능합니까?
매개변수를 열 이름으로 처리하고 대신 문자열을 전송하여 작동하게 할 수 있지만 동일하지는 않습니다!
Re: 사용자 정의 함수의 열 참조
@john_madden 썼다:하지만 이 해결 방법을 기대하지 않는 순진한 사용자를 위해 열 수식에서 깔끔하게 작동하는 사용자 지정 함수를 작성하려는 경우
게다가 순진한 사용자 , 이는 Jmp 자체이기도 합니다. 사용 가능한 해결 방법이 실패하는 "변환 기능"입니다.
Re: 사용자 정의 함수의 열 참조플랜 B에 관해서는, 열을 참조하고, 방금 Jmp 지원팀 TS-00063463으로부터 이 답변을 받았습니다.

Re: 사용자 정의 함수의 열 참조같은 질문에 갇힌 것 같습니다.
사용자 정의 함수 - 열을 참조하는 방법
... 같은 적용사례라도 말이죠.
고유 개수와 관련하여 Kudos를 기다리는 위시리스트 항목이 있습니다.
새로운 JSL 기능: Col N 카테고리
문제에 관해서는 열 참조 , 실제로 관련이 있지만 주제가 다른 소원이 있습니다.
사용자 정의 열 수식을 한 번에 평가하거나 행 사이의 값을 캐시하는 옵션 또는 함수
... 그럼에도 불구하고 마지막 문장에서 열을 참조하는 것과 관련된 문제를 언급합니다.

Re: 사용자 정의 함수의 열 참조지금까지 제가 생각해 낼 수 있었던 최선의 방법은 – 실제로 제가 원하는 것은 아니지만 – 열 매개변수를 Name Expr() 명령으로 묶는 것입니다. 예를 들어 ":Column 1"이라는 열이 있는 데이터 테이블이 있으면 다음과 같이 작동합니다.
Names Default To Here( 1 );
dt = Current Data Table();
Add Custom Functions(
New Custom Function(
"x",
"Testf",
Function( {col},
{i},
For Each Row( dt, Print( col ) );
)
)
);
x:Testf(Name Expr(dt:Column 1));하지만 당신은 이것을 할 수 없습니다:
dt = Current Data Table();
Add Custom Functions(
New Custom Function(
"x",
"Testf",
Function( {Name Expr(col)}, // JSL interpreter gives error for this syntax
{i},
For Each Row( dt, Print( col ) );
)
)
);
x:Testf(dt:Column 1); // hypothetical, as the function definition is in errorRe: 사용자 정의 함수의 열 참조나 역시 이 문제로 어려움을 겪었기 때문에 이 질문을 다시 제기하고 싶습니다. 영원히 지속될 것 같습니다.
열 참조(예:Column 1)를 매개변수로 허용하는 사용자 정의 함수(사용자 함수)를 작성하는 신뢰할 수 있는 방법이 있는 사람이 있습니까?
내 해결 방법은 항상 열 이름을 문자열로 전달한 다음 상황에 따라 함수 내에서 Column() 또는 As Column()을 사용하여 참조를 생성하는 것이었습니다.
하지만 이 해결 방법을 기대하지 않는 순진한 사용자를 위해 열 수식에서 깔끔하게 작동하는 사용자 지정 함수를 작성하려면 대신 열 참조나 열 이름을 전달할 수 있으면 좋을 것입니다(예: , 기본 기능의 경우).
남자
Re: 사용자 정의 함수의 열 참조답장을 보내 주셔서 감사합니다. 나중에 x가 로컬일 수 없는 것과 같은 다른 문제가 있다는 것을 깨달았지만 이는 고칠 수 있습니다.
하지만 함수 호출에서 열 참조를 전달하는 방법을 알 수 없었습니다. 얼마 전에 비슷한 문제가 있었고 열 이름을 문자열로 전달하여 해결했습니다. 아래 예와 같이 작동합니다.
names default to here(1);
Add Custom Functions(
{New Custom Function(
"NNE",
"N Categories",
Function( {Categories, ByColumn},{Default local},
If( Row() == 1,
Summarize( here:x = by( column(ByColumn), column(Categories) ) );
);
N Items( Loc( here:x[1], column(ByColumn)[row()] ) );
),
<<DESCRIPTION></DESCRIPTION>열 수식에서는 다음과 같이 호출할 수 있습니다.

그러나 열 참조 대신 문자열이 필요합니다. 내 질문을 바꿔 말하면 다음과 같습니다. N 카테고리 함수가 문자열 대신 열 참조를 허용하도록 위의 내용을 변경하는 것이 가능합니까?
Re: 사용자 정의 함수의 열 참조1. 혼란스러워 "사용자 정의 함수 추가()"를 찾고 있는 모든 커뮤니티 회원을 위해 JMP 14에 추가되는 기능입니다.
2. @thomasz , 나는 당신이 만들고 있는 함수가 공식과 동일할 것이라고 기대할 수 없다고 생각합니다.귀하의 수식은 일반 수식이 아니며 함수로 수행하려는 작업과 달리 하드 코딩된 수식입니다.그러니 당연히 차이가 있을 수밖에 없습니다. 제 생각엔 일반 함수라면 공식이 어떤 모습일지 생각해 본 다음, 공식을 그대로 개발해야 할 것 같습니다.제가 정리한 유사한 일반 공식은 아래를 참조하세요.
