사용자 정의 인수를 사용하여 테이블 전이<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />알려진 Label 열 이름을 사용하여 테이블을 조 변경하려고 시도하지만 런타임시에만 알려진 열 이름을 조 변경합니다. 나는이 작업을 수행하는 방법을 알아 내려고 노력했지만 시간이 많이 걸렸지 만 JSL이 행렬 조인 함수에 대한 Transpose 명령을 잘못 이해하고 Columns () 인수를 사용하여 모든 열의 이름을 가져 오는 함수 탁자. 다음 코드에서 목록 열은 조 변경하려는 열의 이름으로 채워집니다.
// 전치 표현식 만들기
transposeExpr = Expr (Transpose (Columns (), Label (: Wt 또는 Rd)));
// Columns 인수 표현식을 꺼내십시오 (이렇게하면 나 자신을 만들어서 Columns () 함수로 오인하지 않아도됩니다)
columnsExpr = Arg (transposeExpr, 1);
For (i = 1, i <= numColumns, i ++,
안으로 삽입 (columnsExpr, Name Expr (As Column (colNames ))));
);
제거 (TransposeExpr, 1);
삽입 (transposeExpr, 이름 확장 (columnsExpr), 1);
cdt = 현재 데이터 테이블 ();
cdt << 전치 (Name Expr (columnsExpr), 레이블 (: Wt 또는 Rd));
그러나 columnsExpr은 여전히 테이블에 대한 실제 참조가있는 Columns 인수가 아니라 현재 테이블의 모든 열 이름 목록으로 평가되기 때문에 여전히 작동하지 않습니다. (나는이 참조가 칼럼 함수에 대한 인자라고 해석한다고 생각한다)
누구든지 내가 뭘 잘못하고 있는지 설명해 주시겠습니까?
제목 : Re : 테이블을 사용자 정의 인수로 바꾸기1. 조 변경 (열 () .... )는 수동으로 채울 것처럼 쉼표로 구분 된 열 이름을 예상합니다. 목록의 이름을 기대하지 않으며 관심있는 열 이름이 들어있는 목록의 이름에서 정보를 추출하는 방법을 알지 못합니다. eval 함수는 갭을 연결합니다. 이것이 내가이 문제를 보는 방법이지만 다른 누군가는 그것을 기술적으로 더 정확하게 설명 할 수 있습니다.
2. Column ()과 As Column : 나는 어떻게 다른지 잘 모르겠습니다. 문서의 간단한 예는 기능상 상호 교환 가능하게 보입니다. 관심있는 사람은 그들 사이의 차이점을 지적 할 수 있습니다.
제목 : Re : 테이블을 사용자 정의 인수로 바꾸기이것은 효과가있는 것으로 보입니다. 나는 이것을한다:
colList = List ();
For (i = 1, i <= numColumns, i ++,
삽입 대상 (colList, column (colName ));
);
cdt = 현재 데이터 테이블 ();
cdt << 전치 (열 (Eval (colList)), 레이블 (: Wt 또는 Rd));
마지막 메시지에서 colList의 Eval을 계산해야하는 이유는 무엇입니까? Column ()과 As Column ()의 차이점은 무엇입니까?
제목 : Re : 테이블을 사용자 정의 인수로 바꾸기당신이하고 싶은 것을 정확히 이해하고 있는지는 확실하지 않지만 피트니스 데이터가 최신이라고 가정하면이 예가 도움이 될 것입니다.
collist = {: Age, : Oxy, : Runtime};
데이터 테이블 ( "피트니스") << 조옮김
열 (eval (collist)),
레이블 (: 이름),
출력 표 (Fitness의 "Transpose")
)
제목 : Re : 테이블을 사용자 정의 인수로 바꾸기이런 문제가 생기면 동적으로 문자열을 만들고 eval (parse ())로 실행합니다. 이것은 다소 무차별 적이지만, expr, eval, parse, name expr 등과 같은 다양한 함수를 모두 사용하여 매듭을 묶어 놓습니다.
이 작업을 수행해야합니다.
transposeStr = "cdt << 조 변경 (열 (" ;
에 대한 ( 나는 = 1 , 나는 <= numColumns , 나는 ++,
transposeStr = transposeStr || ":" || colNames [ 나는 ] || "," ;
) ;
// 마지막 쉼표를 제거합니다.
까마귀 = 길이 ( transposeStr ) ;
transposeStr = substr ( transposeStr , 1 , ( 까마귀 - 2 )) ;
// label 인수를 추가합니다.
transposeStr = transposeStr || "), 레이블 (: Wt 또는 Rd))" ;
평가 ( 해석하다 ( transposeStr )) ;