Setting up a 3D matrix in R and accessing certain elements

前端 未结 3 518
日久生厌
日久生厌 2021-02-02 07:54

I am trying to set up a 3D matrix in R. I guess this is an easy one. However, I didn\'t find a solution so far. Let\'s say we want to create a 365x6x4 matrix. Also crucial form

相关标签:
3条回答
  • 2021-02-02 08:25

    Try this simple example (have made the example a fairly small one so it's clear what's going on - I explain below how to tweak it for your precise question!)...

    m = array(1:60, dim=c(3,4,5))
    
    m[2,1,5]
    [1] 50
    
    m[2,1,5] = -50
    
    m[2,1,5]
    [1] -50
    

    Type m to see the whole 3d array :)

    In your example, you'd set up your initial array as m = array(NA, dim=c(365,6,4)) (this will fill it with NAs to start with - do you have data to fill it up with?) And the assignment is m[304,5,2] = 204, of course :)

    0 讨论(0)
  • 2021-02-02 08:34

    Try this:

    ar <- array(someData, c(365, 6, 4));  
    ar[304,5,2] <- 204;
    

    where someData might be

    someData <- rep(0, 365*6*4);  
    

    or even better maybe

    someData <- rep(NaN, 365*6*4);  
    
    0 讨论(0)
  • 2021-02-02 08:42

    A matrix is a special 2-dimensional case of an array. (Quoting from the help for ?matrix).

    So, you need array:

    x <- array(rep(1, 365*5*4), dim=c(365, 5, 4))
    str(x)
    num [1:365, 1:5, 1:4] 1 1 1 1 1 1 1 1 1 1 ...
    

    Set a specific value:

    x[305, 5, 2] <- 204
    

    Print one slice:

    x[305, , ]
         [,1] [,2] [,3] [,4]
    [1,]    1    1    1    1
    [2,]    1    1    1    1
    [3,]    1    1    1    1
    [4,]    1    1    1    1
    [5,]    1  204    1    1
    
    0 讨论(0)
提交回复
热议问题