我有一个名为 的数据框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。
有人可以帮忙吗?
你可以使用unlist():
matrix(unlist(input[ArtID ==i,-1]),2)
Run Code Online (Sandbox Code Playgroud)
或使用
storage.mode(m) <- "numeric"
Run Code Online (Sandbox Code Playgroud)