0

3D 空間のさまざまな場所で取得した一連の測定値があるとします。測定値の位置には座標ベクトルがあります

x <- c(0,1,2,3)
y <- c(4,5,6)
z <- c(7,8)

したがって、たとえば、原点に最も近い測定は location= で行われました(0,4,7)。上記の座標ベクトルから、3D 配列を作成したいと思いますが、配列のみです。@bnaul: これらは、値を割り当てたいボクセルの中心の座標です。私の意図は、pcodeで、

arr <- magic( c(0,1,2,3) , c(4,5,6) , c(7,8) )
# arr is now a 3D array filled with NAs
value1 -> arr[0, 4, 7]
value2 -> arr[3, 5, 7]
# and so on, but if one does
valueBad -> arr[4,3,2] # one should get an error, as should, e.g.,
valueBad2 -> arr[3,4,5]

しかし、私はあまりにも長い間「NetCDF で考えていた」のではないかと思います。基本的に、上記でやりたいことは、座標を配列に代入することですが、これは R ではできないと思います。

4

3 に答える 3

1
# starting data
x <- c(0,1,2,3)
y <- c(4,5,6)
z <- c(7,8)

# find every combo
w <- expand.grid( x , y , z )

# convert to a matrix
v <- as.matrix( w )

# view your result
v
于 2013-02-06T23:17:34.237 に答える
1

または、これも役立つ場合があります。希望する結果を明確にしてください:)

# starting data
x <- c(0,1,2,3)
y <- c(4,5,6)
z <- c(7,8)

# create a 4 x 3 x 2 array
v <- 
    array( 
        # start out everything as missing..
        NA , 
        # ..and make the lengths of the dimensions the three lengths.
        dim = 
            c( length( x ) , length( y ) , length( z ) ) 
    )

# view your result
v

# now populate it with something..
# for now, just populate it with 1:24
v[ , , ] <- 1:length(v)

# view your result again
v
于 2013-02-06T23:32:05.750 に答える
0
 array(NA, dim=c(4,3,2), 
   dimnames=list( x = c(0,1,2,3),
     y = c(4,5,6),
     z = c(7,8) ) )
, , z = 7

   y
x    4  5  6
  0 NA NA NA
  1 NA NA NA
  2 NA NA NA
  3 NA NA NA

, , z = 8

   y
x    4  5  6
  0 NA NA NA
  1 NA NA NA
  2 NA NA NA
  3 NA NA NA
于 2013-02-07T00:28:26.900 に答える