문제 : 데이터베이스에서 데이터를 로드하는 스크립트를 실행합니다. 데이터 테이블에서 모든 수식을 삭제합니다. 빨간색 삼각형 메뉴를 사용하여 테이블 스크립트를 복사합니다. 스크립트 창에 테이블 스크립트를 붙여넣습니다. 스크립트를 실행합니다. 테이블 스크립트에서 생성된 테이블은 다른 열 그룹화를 가지며 열을 주변에 던집니다(테이블 스크립트에 의해 생성된 원본 테이블과 테이블의 열 패널을 나란히 보여주는 스크린샷 참조. 참조용으로 첨부된 파일도 참조하십시오).

처음에는 테이블 스크립트가 열 이름의 선행 공백을 유지하지 않기 때문이라고 생각했지만 아래 스크린샷에서 볼 수 있듯이 선행 공백은 실제로 테이블 스크립트의 일부이며 테이블 스크립트.

열 이름의 공백을 포함하여 원래 데이터 테이블을 실제로 다시 만드는 방법이 있습니까? 아니면 일반적으로 좋지 않은 스크립팅 전략입니까?
열 이름에 선행 공백을 사용하지 않겠지만(대부분의 특수 문자도 사용하지 않음) 이 경우 JMP에서 유효한 열 이름인 것처럼 작동해야 합니다.나는 이것이 New Column의 버그라고 말하고 싶습니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
wait(1);
Column(dt, 2) << Set Name(" A");
wait(1);
dt << New Column(" A");
내 마음에 떠오르는 "빠른" 해결 방법은 << Set Name to New Table 스크립트를 추가하는 것이지만 그룹화가 완료되기 전에 이것이 트리거되는지 확실하지 않습니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]), << Set Name(" A"))
);
따라서 먼저 스크립트를 클립보드로 가져온 다음 텍스트로 가져와서 실행하기 전에 수정해야 합니다.
이것은 이 한 가지 예와 함께 작동하는 매우 빠른 예입니다.
Names Default To Here(1);
str = JSL Quote(dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
));
new_lines = {};
For Each({line}, Words(str, "\!N"),
If(Starts With(Trim Whitespace(line), "New Column("),
// get column name
col_name = Regex(Trim Whitespace(line), "^New Column\(\!"(.+?)\!",\s", "\1");
// add set name
last_idx = Contains(line, ")", -1);
new_line = Left(line, last_idx - 1) || ", << Set Name(\!"" || col_name ||"\!")),";
Insert Into(new_lines, new_line);
,
Insert Into(new_lines, line);
);
);
old_dt = Eval(Parse(str));
new_dt = Eval(Parse(Concat Items(new_lines, "\!N")));
@jthi 감사해요. 나는 공백을 선행하는 것이 나쁜 습관이 될까 봐 두려웠다. 이 버그가 추가되거나 보고될 수 있거나 보고될 수 있는 목록이 있습니까?
또한 귀하가 제안한 해결 방법을 구현하는 것보다 다른 열 이름을 지정하도록 스크립트를 다시 작성하는 것이 더 쉽다고 생각합니다. (실제로 방금 응답하려고 했을 때 실수로 귀하의 응답에 해결책이라고 표시했습니다.) 항상 다른 JMP 사용자를 교육하기 위한 귀중한 의견과 지칠 줄 모르는 노력에 감사드립니다. 이것은 매우 도움이 됩니다.
나는 일반적으로 버그로 jmp 지원에 연락했습니다. 이 게시물은 상황의 아주 좋은 예가 되어야 하므로 이에 대한 링크를 추가하는 것을 잊지 마십시오.
이상한 해결 방법을 관리하는 것보다 열의 이름을 바꾸는 것이 확실히 (내 생각에는) 좋은 생각입니다. 이러한 공백은 결국 나중에 문제를 일으킬 수 있습니다.