2014-10-14 5 views
1

두 개의 다른 행렬의 값을 채우려는 빈 행렬이 하나 있습니다. 이 내 빈 행렬이다 :다른 행렬의 빈 행렬에 값을 할당하십시오.

Att_table_S01_E031_Mod <- matrix(NA, nrow = 16, ncol = 13) 
colnames (Att_table_S01_E031_Mod) <- c("ID", "Area", "LU_1990", "LU_2000", "LU_2005", "CHLU_90_00", "CHLU_00_05", "Tile", "Unique_ID", "D_90_00", "D_00_05", "Source_90_00", "Source_00_05") 

다른 두 행렬 나는이 새로운 매트릭스와 같은 ID, Area, LU_1990 등등에 포함 할 정보가 포함되어 있습니다. 그러나 나는 아직 그것을 할 방법을 찾지 못했습니다. 몇 가지 힌트를 잘 부탁드립니다.

행렬 Att_table_S01_E031에는 단 하나의 열만있는 것처럼 보입니다. 어떻게 나눌 수 있니? [1] "ID.Area_ORG.LU_1990.LU_2000.CHLU_90_00.LU_2005.CHLU_00_05.Tile.UNIQ_ID.AREA.D_90_00.D_00_05.Sour_90_00.Sour_00_05.Conf_90_00.Conf_00_05"상보 matricies 들어

+0

다른 행렬의 재현 가능한 예도 제공하십시오. –

+0

이것은 다음 중 하나입니다 : z <- extract (x = rc_GLC2000_LC, y = Deforested_areas) # 이것은 벡터의 목록을 반환합니다 (s의 각 지형지 물에 대해 r의 모든 값 중 하나의 벡터) # 대부분을 차지하는 함수를 만듭니다. (x = rc_Mod2000_LC, y = Deforested_areas) z <- extract (x = rc_Mod2000_LC, y = Deforested_areas) maj <- 함수 (x) { y <- as.numeric (이름은 which.max (table (x)))) return (Y) } # 반환 기능마다 하나 개의 값 (대부분) Z <- 추출물 COLNAMES (z) <(X = rc_Mod2000_LC는, Y는 Deforested_areas 재미 = 소장 =) - C ("LU_2000")를 –

+0

및 두 번째 것 : Att_table_S01_E031 <- as.matrix (Att_Table_Deforested_areas) –

답변

0

,

columnsToTransfer <- c('ID','Area','Tile','Unique_ID','LU_1990') 
otherColumns <- colnames(Att_table_S01_E031_Mod)[!(colnames(Att_table_S01_E031_Mod) %in% columnsToTransfer)] 
Att_table_S01_E031_Mod[,columnsToTransfer] <- table2[,columnsToTransfer] 
Att_table_S01_E031_Mod[,otherColumns] <- table3[,otherColumns] 

두 개의 작은 matricies가 큰 행렬을 완전히 채우지 않을 경우

columnsToTransfer1 <- c('ID','Area','Tile','Unique_ID') 
columnsToTransfer2 <- 'LU_2000' 
Att_table_S01_E031_Mod[,columnsToTransfer1] <- table2[,columnsToTransfer1] 
Att_table_S01_E031_Mod[,columnsToTransfer2] <- table3[,columnsToTransfer2] 
+0

표 2와 표 3을 다른 두 행렬로 바꾼 경우이 오류 메시지가 나타납니다. Att_table_S01_E031 [, columnsToTransfer]의 오류 : 아래 첨자 외부로 향하는 이유를 아십니까? –

+0

은 열 이름에 'ID', 'Area', 'Tile'및 'Unique_ID'가없는 것 같습니다. colnames를 확인하십시오 (Att_table_S01_E031_Mod). 그들은 모두 거기에 있습니까? – hedgedandlevered

+0

예 행렬에 LU_2000이 하나만 있고 행렬에 Att_table_S01_E031이 있습니다. 새 행렬 (Att_table_S01_E031_Mod)보다 많은 열을 가지고 있습니다 –

관련 문제