2017-12-07 24 views
-1

나는 zipcodes와 관련 셰이프 파일을 요소로 갖는 대형 데이터 프레임 df를 가지고 있습니다.대형 데이터 프레임의 조각으로 벡터 만들기

약 150 개의 영토가있는 영역 필드 df $ V2가 있습니다.

각각의 지역에 대해 연결된 우편 번호에 대한 인접성 매트릭스를 생성하기 위해 gTouches를 실행하고 있습니다. 내가 원하는 것은 궁극적으로 지역 이름 (문자)과 인접 행렬 (행렬)의 두 필드가있는 목록입니다.이 행렬은 정사각형 행렬이되지만 모든 요소에 대해 같은 크기가 아닙니다. 이 목록에는 150 개의 요소가 있습니다 (영역 당 1 개).

내 코드는 다음과 같습니다 (그리고 나는이 확실히 당황 사과하지만 난 초보자 해요) :

Adjacency_Matrices<-list() 
for(i in 1:length(unique(as.character([email protected]$V2)))) 
{Adjacency_Matrices[[i]][1]<-unique(as.character([email protected]$V2))[i] 
Adjacency_Matrices[[i]][2]<- 
gTouches(df[[email protected]$V2==unique(as.character([email protected]$V2))[i],], byid=TRUE)} 

그래서 1 호선 고유 영토 내 목록의 길이를 통해 반복된다. 2 행은 목록의 첫 번째 필드 (문자열)를 정의합니다. 3/4 줄은 문자열의 두 번째 필드를 정의합니다 (gTouches 출력은 정사각형 행렬입니다).

1) 대체 할 항목의 수는 Adjacency_Matrices에서

2) 에러 교체 길이의 배수가 아닌 [[1]] : 아래 첨자 범위 밖으로

나는 두 개의 오류가 발생할 수

나는 1을 계속해서 go 검사하고 이것을 고치는 방법을 찾을 수없는 것처럼 보입니다. 번호 2 R에서 목록을 인스턴스화하는 방법에 대해 간단히 설명하지 않은 것 같습니다.

설명이 필요하면 도움을 주시면 감사하겠습니다.

+0

이 샘플 (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 당신이 [재현 예]를 제공하는 경우 당신을 도와 쉽게 입력 데이터와 원하는 출력을 사용하여 실제로 코드를 실행하고 테스트 할 수 있습니다. 베이스 R 외부에서 사용중인 패키지/라이브러리를 명시 적으로 나열하십시오. – MrFlick

답변

0

밝혀졌습니다. 나는 이것을 생각하지 못했습니다.

i 자체를 정의하기 전에 Adjacency_Matrices [1] [1]을 정의 할 수 없습니다.

필자가 필요로하는 것은 Adjacency_Matrices [1]을 정의하고 나서 Adjacency_Matrices [2]를 따로 따로 정의하는 것입니다. 출력 목록을 정의하는 데 list()를 사용해야합니다.

Adjacency_Matrices<-list(
for(i in 1:length(unique(as.character([email protected]$V2)))) 
{Adjacency_Matrices[[i]]<-list(unique(as.character([email protected]$V2))[i], 
gTouches(df[[email protected]$V2==unique(as.character([email protected]$V2))[i],], byid=TRUE))}