【发布时间】:2019-11-04 22:31:26
【问题描述】:
鉴于foo 和mock,有没有办法让foo 作为类matrix 而不是array?
调用as.matrix() 会将foo 放入错误的结构中。
我想让foo 成为matrix,只有一行而不是两行。
foo = structure(c(0.729504668890744, 0.190464932275543, 0.0800303988337127),
.Dim = c(1L, 3L, 1L),
.Dimnames = list(NULL, c("A", "B",
"C"), "NA"))
class(foo[, , 1L])
#> [1] "numeric"
print(foo[, , 1L])
#> A B C
#> 0.7295047 0.1904649 0.0800304
mock = structure(c(0.550876469322338, 0.729504668890744, 0.342833178276825,
0.190464932275543, 0.106290352400837, 0.0800303988337127),
.Dim = c(2L,
3L, 1L),
.Dimnames = list(NULL, c("A", "B", "C"),
"NA"))
class(mock[, , 1L])
#> [1] "matrix"
print(mock[, , 1L])
#> A B C
#> [1,] 0.5508765 0.3428332 0.1062904
#> [2,] 0.7295047 0.1904649 0.0800304
# matrix conversion does not result in desired structure
as.matrix(foo[, , 1L])
#> [,1]
#> A 0.7295047
#> B 0.1904649
#> C 0.0800304
由reprex package 创建于 2019-11-04 (v0.3.0)
【问题讨论】:
-
试试
array(c(foo), dim(foo)[-3], dimnames = dimnames(foo)[1:2]) -
t(foo[,,1L])
标签: r arrays matrix type-conversion