내 작업 프로젝트의 경우 PCoA (다차원 스케일링이라고도하는 주요 좌표 분석)를 수행해야합니다. 그러나 R을 사용하여이 분석을 수행 할 때 몇 가지 문제가 발생합니다.큰 데이터 세트로 인해 PCoA가 R로 오류 발생
함수 cmdscale만을 입력으로 매트릭스 또는 DIST를 받아 상기 DIST 함수는 에러 준다 :
Error: cannot allocate vector of size 4.2 Gb
In addition: Warning messages:
1: In dist(mydata[c(3, 4)], method = "euclidian", diag = FALSE, upper = FALSE) :
Reached total allocation of 4020Mb: see help(memory.size)
2: In dist(mydata[c(3, 4)], method = "euclidian", diag = FALSE, upper = FALSE) :
Reached total allocation of 4020Mb: see help(memory.size)
3: In dist(mydata[c(3, 4)], method = "euclidian", diag = FALSE, upper = FALSE) :
Reached total allocation of 4020Mb: see help(memory.size)
4: In dist(mydata[c(3, 4)], method = "euclidian", diag = FALSE, upper = FALSE) :
Reached total allocation of 4020Mb: see help(memory.size)
및 I 매트릭스를 사용할 때는,이 상기 입력 변경 :
[,1]
[1,] Integer,33741
[2,] Integer,33741
데이터 세트의 내용을 온라인으로 게시 할 수는 없지만 치수를 제공 할 수 있습니다. 데이터 세트는 길이가 33741 행, 너비가 11 열이고 첫 열은 ID이고 PCoA에 사용해야하는 다른 10 값입니다.
오류에서 알 수 있듯이 나는 2 개의 열만 사용하므로 이미 메모리 오류가 발생합니다.
내 질문에 :
dist 함수의 메모리 제한으로 관리 할 수있는 방식으로 데이터를 조작 할 수 있습니까?
벡터가 2 열 2 행 출력으로 바뀌는 행렬 함수에 어떤 문제가 있습니까?
내가 시도한 내용 : 가비지 수집으로 지우고 GUI를 다시 시작한 다음 시스템을 다시 시작하십시오.
시스템 : 윈도우 7 64 I7 920qm의 1.8GHz의 4기가바이트 DDR3 램
사용 코드 :이 순서대로 코드를 실행하지 않았다하지만이 코드는 메소드를 포함 물론
mydata <- read.table(file, header=TRUE)
mydist <- dist(mydata[c(3,4)], method="euclidian", diag=FALSE, upper=FALSE)
mymatrix <- matrix(mydata[c(3,4)], byrow=FALSE)
mymatrix <- matrix(cbind(mydata[c(3,4)]))
mycmdscale <- cmdscale(mydist, k=2, eig=FALSE, add=FALSE, x.ret=FALSE)
mycmdscale <- cmdscale(mymatrix, k=2, eig=FALSE, add=FALSE, x.ret=FALSE)
plot(mycmdscale)
데이터를로드하려고했습니다.
미리 답변 해 주셔서 감사합니다.
그럼 내가 그러나 내가 일하는 회사는 내가 만들려고 그래서 계산의 이러한 종류를 처리 할 수있는 서버가없는, 주체가 샘플을 통해 분석 좌표 수행 할 수 있도록 노력하겠습니다 ... 너무 다른 데 도움이 로컬 컴퓨터에 대한 해결 방법. 오늘 쉬는 날이 있기 때문에 data.matrix를 아직 시도 할 수 없지만 제대로 작동한다면 내일 다시 보게 될 것입니다. 시간 내 주셔서 감사합니다. 왜냐하면 이것이 내 상사에게 무엇이 필요한지 알 수 있기 때문입니다. – Sinshz
그래서 여러분의 메서드를 사용하여 매트릭스에로드하려고 시도했습니다. 이러한 메서드는 매트릭스를 만들기 위해 작동합니다. 그러나 PCoA (cmdscale)을 수행 할 수있는 기능이 요청, 매트릭스의 이러한 유형을 허용하지 않습니다 거리해야합니다 cmdscale에 오류 (FALSE = EIG testmatrix, K = 2, = FALSE, x.ret = FALSE 추가) 'dist'또는 정사각형 행렬의 결과 여야합니다. 나는 제한된 기억으로 분석을 수행하는 것이 가능하다고는 생각하지 않지만 어떤 아이디어라도 환영합니다. – Sinshz
@Sinshz이 두 가지는 관련이 없습니다. 나는 두 가지 질문이 무관하다고 생각했다. 그 사과. 내가 보여주는 것은 데이터 프레임의 선택된 열/구성 요소로부터 행렬을 얻는 방법입니다. 'dist'는 여전히 실패 할 것입니다. 왜냐하면 데이터의 행 수가 여러분의 머신이 사용할 수있는 것보다 더 많은 RAM을 필요로하기 때문입니다. –