为什么这个矩阵不是数字的?然后 `as.numeric` 销毁矩阵并返回一个向量

Fea*_*eal 1 r matrix

我有一个名为 的数据框input。第一列指的是文章 ID ( ArtID),后续列将用于创建矩阵。

基于ArtID,我希望 R 生成一个 2x2 矩阵(更准确地说:它需要是一个数字 2x2 矩阵)。具体来说,我想为第一行(ArtID == 1)、第二行(ArtID == 2)等创建一个矩阵......

到目前为止我想到的是:

for(i in 1:3) {stored.matrix = matrix(input[which(ArtID ==i),-1],nrow = 2)
Run Code Online (Sandbox Code Playgroud)

这给了我一个 2x2 矩阵,但它不是数字(它需要是)。

如果我应用as.numeric,矩阵就不再是 2x2 矩阵。

如何获得 2x2 数值矩阵?


最小可重现示例:

ArtID = c(1,2,3)
AC_AC = c(1,1,1)
MKT_AC = c(0.5,0.6,0.2)
AC_MKT = c(0.5,0.6,0.2)
MKT_MKT = c(1,1,1)
input = data.frame(ArtID, AC_AC, MKT_AC, AC_MKT, MKT_MKT)

stored.matrix = matrix(input[which(ArtID ==i),-1],nrow = 2)
#     [,1] [,2]
#[1,] 1    0.5 
#[2,] 0.5  1  

is.numeric(stored.matrix)
# [1] FALSE

as.numeric(stored.matrix)
## [1] 1.0 0.5 0.5 1.0
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,应用as.numeric()矩阵后不再是 2x2。

有人可以帮忙吗?

Ben*_*ker 5

你可以使用unlist()

matrix(unlist(input[ArtID ==i,-1]),2)
Run Code Online (Sandbox Code Playgroud)

或使用

storage.mode(m) <- "numeric"
Run Code Online (Sandbox Code Playgroud)