2014-10-21 2 views
1

행렬 목록의 모든 행렬에 상수 값을 제공하고자합니다. 다음은 행렬 목록입니다.행렬 목록 작성 R

list_matrix_Tanzania_Mod <- lapply(1:4, function(i) 
          matrix(sample(1:50, 4*10, replace=TRUE), 
           ncol=4, dimnames=list(NULL, LETTERS[1:4]))) 

다음은 하나의 매트릭스 예입니다.

[[1]] 
     A B C D 
[1,] 15 31 5 16 
[2,] 12 19 28 12 
[3,] 36 34 37 19 
[4,] 26 34 7 8 
[5,] 34 17 12 47 
[6,] 47 46 35 11 
[7,] 14 10 4 37 
[8,] 39 3 30 32 
[9,] 41 26 32 35 
[10,] 13 7 3 49 

나는 각 행렬의 열 D는 값 Modis500_2000 대신의 수를 싶어.

또한 C 열을 AB와 같게하려고합니다. 예를 들어, 위의 행렬 예제에서 행 하나의 C 열에 5 대신 값 1531이 필요합니다.

+0

내가 실제로 – akrun

+0

:-)이 코드를 기억 할 수 있었다). 그러나 하나의'map' 함수는 새로운 행렬리스트에 새로운 이름을주지 않으면 이전 행렬의 결과를 지 웁니다. –

+0

테스트를 거치지 않았지만이 모든 것을 한 번에 시도해 보았습니다. 즉. 'columnsToTransfer <- c (ColumnsToTransfer1, ColumnsToTransfer2, ColumnsToTransfer)'그리고'columnsToTransfer'를 사용하십시오. – akrun

답변

1

이전 질문 (Add new columns to every matrices in a list of matrices in R)을 읽었으며 데이터를 사용하도록 전환하는 것이 좋습니다 . 매트릭스가 아닌. 프레임. 제 의견으로는 귀하의 업무 유형에 맞는 더 나은 데이터 구조입니다. 그럼 당신은 오히려 간단하고 직관적 인 방법으로 열을 추가/수정 transform 같은 기능을 사용할 수 있습니다 : 이것은 두 개의 열 (CD)를 수정 한 (E) 추가합니다

list_matrix_Tanzania_Mod <- lapply(list_matrix_Tanzania_Mod, 
            transform, 
            C = A * B, 
            D = Modis500_2000, 
            E = A + B) 

.

혹시 다시 행렬로 데이터를 변환해야하는 경우

은, 당신은 할 수 있습니다, 그것은 당신

list_matrix_Tanzania_Mod <- lapply(list_matrix_Tanzania_Mod, 
            data.matrix)