R:将数组转换为一行矩阵

R:将数组转换为一行矩阵,r,arrays,matrix,type-conversion,R,Arrays,Matrix,Type Conversion,给定foo和mock,有没有办法将foo作为类matrix而不是array 调用as.matrix()会将foo放入错误的结构中。 我希望foo是一个矩阵,只有一行而不是两行 foo=结构(c(0.729504668890744,0.190464932275543,0.080303988337127), .Dim=c(1L,3L,1L), .Dimnames=列表(空,c(“A”、“B”), "C","NA") 类别(foo[1L]) #>[1]“数字” 打印(foo[,1L]) #>A、B、C

给定
foo
mock
,有没有办法将
foo
作为类
matrix
而不是
array

调用
as.matrix()
会将
foo
放入错误的结构中。 我希望
foo
是一个
矩阵
,只有一行而不是两行

foo=结构(c(0.729504668890744,0.190464932275543,0.080303988337127),
.Dim=c(1L,3L,1L),
.Dimnames=列表(空,c(“A”、“B”),
"C","NA")
类别(foo[1L])
#>[1]“数字”
打印(foo[,1L])
#>A、B、C
#> 0.7295047 0.1904649 0.0800304
模拟=结构(c(0.550876469322338,0.729504668890744,0.342833178276825,
0.190464932275543, 0.106290352400837, 0.0800303988337127), 
.Dim=c(2L,
3升,1升),
.Dimnames=列表(空,c(“A”、“B”、“c”),
(不适用)
类(模拟[,1L])
#>[1]“矩阵”
打印(模拟[,1L])
#>A、B、C
#> [1,] 0.5508765 0.3428332 0.1062904
#> [2,] 0.7295047 0.1904649 0.0800304
#矩阵转换不会产生所需的结构
as.矩阵(foo[1L])
#>        [,1]
#>A 0.7295047
#>B 0.1904649
#>C 0.080304

由(v0.3.0)创建于2019-11-04这里是一个带有
阵列的选项

array(c(foo), dim(foo)[-3], dimnames = dimnames(foo)[1:2])

您可以使用矩阵转置,
base::t()

t(foo[,1L])
#>A、B、C
#> [1,] 0.7295047 0.1904649 0.0800304
类别(t(foo[,1L]))
#>[1]“矩阵”

试试
数组(c(foo),dim(foo)[-3],dimnames=dimnames(foo)[1:2])
t(foo[,1L])
谢谢!这是一种通用方式,因此
nrow(foo)
不会对结果产生影响。看起来
c()
不是必需的为什么
array
而不是
matrix
?——<代码>矩阵(mock,dim(mock)[3],dimnames=dimnames(mock)[1:2])
@M--
数组更通用,可以创建n维,而
矩阵只能创建2维。这适用于
foo
,但会弄乱
mock
的DIMNAME:
t(mock[,1L])
@pat-s基于这一行--“给定foo和mock,有没有办法将foo作为类矩阵而不是数组?”--我以为您只对将
foo
转换为
矩阵感兴趣。无论如何,很高兴阿克伦的回答对你有用。正如你在评论中提到的,他们的回答是一般性的。干杯。是的,我没有提到在最好的情况下解决方案应该是不可知论的。尽管这只是一个额外的好处。我也投票给你,谢谢你的回复!