我有一个2D数据框,其中有3600行和800列的雷达数据,我需要将其转换为一个3D数组,其中有10行、360列和800个级别。我需要将3600行分成10组,每组包含360行,并将800列转换为新数组的级别。因此,不是-
> dim(REF)
[1] 3600 800
我需要将值输入到表单中-
> dim(ref.array)
[1] 10 360 800
我知道这是一个相当基本的请求,但因为两年前上完课后就没有太多机会使用R,所以我记不清了。非常感谢您提供的任何帮助。
下面编辑来回答问题。
如果我们采用@BondedDust给出的例子,我们将得到以下结果-
d <- as.data.frame( matrix( 1:(3*4*5), 12, 5))
array( unlist(d), dim=c(3, 4, 5) )
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
, , 3
[,1] [,2] [,3] [,4]
[1,] 25 28 31 34
[2,] 26 29 32 35
[3,] 27 30 33 36
, , 4
[,1] [,2] [,3] [,4]
[1,] 37 40 43 46
[2,] 38 41 44 47
[3,] 39 42 45 48
, , 5
[,1] [,2] [,3] [,4]
[1,] 49 52 55 58
[2,] 50 53 56 59
[3,] 51 54 57 60
我正在寻找的是这样一个数组结构——
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 14 15 16
[2,] 17 18 19 20
[3,] 21 22 23 24
, , 3
[,1] [,2] [,3] [,4]
[1,] 25 26 27 28
[2,] 29 30 31 32
[3,] 33 34 35 36
, , 4
[,1] [,2] [,3] [,4]
[1,] 37 38 39 40
[2,] 41 42 43 44
[3,] 45 46 47 48
, , 5
[,1] [,2] [,3] [,4]
[1,] 49 50 51 52
[2,] 53 54 55 56
[3,] 57 58 59 60
simplify2array(lapply(1:ncol(REF), function(x) matrix(REF[,x], nrow=10)))
或者sapply(1:ncol(REF), function(x) matrix(REF[,x], nrow=10), simplify="array")
可能会奏效。 - Jota