대형 테이블 만있는 JMP 스크립트 오류 : 배열의 최대 길이?안녕 JMP 커뮤니티,
아래의 스크립트를 사용하면 ~ 500 개의 열이있는 테이블에서 효과적입니다. 20,000 개의 열이있는 큰 테이블에서 사용할 때 이상한 문제가 발생했습니다. 본질적으로 스크립트가 정상적으로 완료되어 원하는대로 출력 테이블을 생성하지만 실제 값은 거의 무작위입니다 (수동으로 확인).
무슨 일이 일어날 지에 대한 단서가 있습니까? 내가 데이터를 수집하는 데 사용하는 배열의 최대 길이를 초과하여 메모리 할당 오류로 인한 것일 수 있습니다.
참고 : 데이터의 기밀성 때문에 작업중인 대형 테이블을 공유 할 수 없습니다.
감사,
Names Default to Here (1);
dt = Current Data Table ();
m = {};
m1 = [];
m2 = [];
m3 = [];
m4 = [];
For (i = 12 , i <= N Col (dt),i++,
mv = Multivariate(
Y( :BIOMARKER, column(i) ),
Estimation Method( "Row-wise" ),
Scatterplot Matrix(
Density Ellipses( 1 ),
Shaded Ellipses( 0 ),
Ellipse Color( 3 )
),
Spearman's ρ( 1 ),
Kendall's τ( 1 )
);
mvr = mv << report;
insert into (m, Column Name (i));
m1 = m1 || ((mvr [Outline Box (1)] [Number Col Box (1)])<< get) [1];
m2 = m2 || ((mvr [Outline Box (1)] [Number Col Box (2)])<< get) [1];
m3 = m3 || ((mvr [Outline Box (1)] [Number Col Box (3)])<< get) [1];
m4 = m4 || ((mvr [Outline Box (1)] [Number Col Box (4)])<< get) [1];
mv << close window;
);
New Table ("Non-Parametric Correlation",
New column ("Symbol", character, set values (m)),
New column ("Spearman Rho", numeric, set values (m1)),
New column ("Spearman p", numeric, set values (m2)),
New column ("Kendall Tau", numeric, set values (m3)),
New column ("Kendal p", numeric, set values (m4)),
);제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이?이 시도:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
Column(dt_out, 1)[r] = Column(dt, i) << get name;
For(c = 2, c <= 5, c++,
Column(dt_out, c)[r] = (mob[Number Col Box(c - 1)] << get)[1];
);
mv << close window;
r++;
);
dt_out << show window(1);제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이?내 문제에 대한 우아한 해결책을 가져 주셔서 감사합니다.
난 그냥 내 데이터 (데이터 테이블 및 고정 변수를 대체 한 후) 그것을 테스트하고 오류 메시지 (디버거) 반환 : 잘못된 인수를 줄에
dt_out<SPAN class="token punctuation">[</SPAN>r<SPAN class="token punctuation">,</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">=</SPAN> <SPAN class="token function">Column Name</SPAN><SPAN class="token punctuation">(</SPAN>i<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
나는 JMP 11.1과 호환되지 않는이 명령이나 구문을 추측한다. 최선의 해결책은 무엇일까요?
제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이?무슨 일이 일어나고 있는지 잘 모르겠다. 큰 목록 / 행렬의 모든 데이터를 수집하는 대신 출력 테이블을 점진적으로 채우는 것이 더 효과적 일 수 있습니다.
예 (JMP 13) :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
m ||= mob[Number Col Box(1)] << get as matrix;
m ||= mob[Number Col Box(2)] << get as matrix;
m ||= mob[Number Col Box(3)] << get as matrix;
m ||= mob[Number Col Box(4)] << get as matrix;
mv << close window;
dt_out[r, 1] = Column Name(i);
dt_out[r, 2 :: 5] = m;
r++;
);
dt_out << show window(1);
제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이?세부 사항을 추가하면 대부분의 JMP 플랫폼 (즉, 배포, 파티션 등)에서 여러 코어를 사용합니다. JSL 코드는 단일 프로세서이지만 Multivarate 플랫폼은 보유 할 수있는 모든 프로세서를 사용합니다.
제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이?안녕 Uday,
감사.
방금 백그라운드에서 실행중인 다른 응용 프로그램이없는 동일한 스크립트를 실행 해 보았지만 정상적으로 작동했습니다. 따라서 작업 관리자 (Windows 10)에 따르면 2GB RAM이 없는데도 메모리 오버플로가 발생했을 수 있습니다.
제목 : Re : 대형 테이블에만 JMP 스크립트 오류 : 배열의 최대 길이? @sornasst ,
얼마나 도움이 될지 모르지만 시스템 RAM 세부 정보를 여기에서 공유 할 수 있습니까? 나는 JMP가 멀티 코어에서 동작한다고 생각하지 않는다. 그래서 싱글 코어에서 실행된다고 가정 할 때, 당신은 이것을 지원할 수 있는가?