我有这个
df <- dplyr::tibble(id = c(1, 1, 1, 2, 2, 2),
value = c(0.2, 0.3, 0.4, 0.5, 0.6, 0.7),
value2 = c(1.2, 1.3, 1.4, 1.5, 1.6, 1.7))
字符串
我想把它重新排列成数组。我确实设法在相当manuell过程中做到了这一点。看一看:
batch_size <- 2
lookbacks <- 3
n_features <- 2
x <- as.matrix(df %>% select(-id))
samples <- array(0, dim = c(batch_size, lookbacks, n_features))
samples[1,,] <- x[1:3, ]
samples[2,,] <- x[4:6, ]
型
这给了我想要的输出:
[,1] [,2] [,3]
[1,] 0.2 0.3 0.4
[2,] 0.5 0.6 0.7
, , 2
[,1] [,2] [,3]
[1,] 1.2 1.3 1.4
[2,] 1.5 1.6 1.7
型
然而,我想知道是否有可能直接将数据一次性转换为所需的数组,就像
samples <- array(x, dim = c(batch_size, lookbacks, n_features))
型
然而,这给出:
[,1] [,2] [,3]
[1,] 0.2 0.4 0.6
[2,] 0.3 0.5 0.7
, , 2
[,1] [,2] [,3]
[1,] 1.2 1.4 1.6
[2,] 1.3 1.5 1.7
型
,这会以错误的方式重新排列数据。
是否有任何选项可以更改此行为以实现第一个输出?
2条答案
按热度按时间wvmv3b1j1#
可以使用
sapply(simplify = "array")
+matrix(byrow = TRUE)
:字符串
hs1ihplo2#
array
这样做字符串
这给了
型