"할당이 이 (가)"이 아닌 오류를 방지하려면 적절한 방식으로 거대한 거리 매트릭스를 할당하는 방법. 어떤 공간에 무작위로 100,000 포인트가 퍼져 있다고 상상해보십시오. DistMatrix의 절반 인 을 나타내는 행렬 또는 "dist"-object를 어떻게 영리하게 만들 수 있습니까? 어쩌면 많은 수의 거리를 효율적으로 할당 할 수있는 또 다른 객체 여야합니다.큰 거리 매트릭스를 만드는 방법은 무엇입니까?
는 다음 링크에서 polygonial 개체를 얻을 수 있습니다 : https://www.dropbox.com/sh/65c3rke0gi4d8pb/LAKJWhwm-l
# Load required packages
library(sp)
library(maptools)
library(maps)
# Load the polygonal object
x <- readShapePoly("vg250_gem.shp")
# Sample or Pick up a large Number of Points
# this command needs some minutes to be done.
# "coord" is SpatialPoints Object
n <- 1e5
coord <- spsample(x, n, "random")
# Try to measure the distances by dist()
DistMatrix <- dist([email protected])
Error: negative length vectors are not allowed
# Try to measure the distances by spDists()
DistMatrix <- spDists(coord)
Error: cannot allocate vector of size (some number) MB
# It seems that the problem lies on large matrix to be created.
는 방법 "N"의 큰 숫자 R에 풀 수있는이 문제입니다.
작은 배치로 말하면 spDistsN1()을 사용하는 것일뿐입니다. 아이디어를 명확히 할 수 있다면 유용 할 수 있습니다. 미리 감사드립니다. –
안녕하세요. 나는 그 접근법에 익숙하지 않다. 그러나 그것이 당신을 위해 잘 작동한다면. 저는 실제로 거리 매트릭스를 부분 매트릭스로 나누고 각각의 부분 매트릭스를 하나씩 풀기를 의미합니다. 결과를 하드 드라이브에 매번 저장합니다. RAM을 확보하십시오. –
당신은 sum, sqrt 등과 같은 단순한 계산 작업을 빠르게하는 패키지를 알고 있습니다. 나는 그것을 허용하는 꾸러미가있다라고 들었다. 그러나 나는 아무것도 발견 할 수 없었다. –