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

2023-12-04

我有一个名为的数据框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)

这给了我一个 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

申请后可以看到as.numeric()矩阵不再是 2x2。

有人可以帮忙吗?


你可以使用unlist():

matrix(unlist(input[ArtID ==i,-1]),2)

or use

storage.mode(m) <- "numeric"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐