为什么as.numeric将矩阵转换为向量,如何将结果保存为矩阵?

时间:2017-07-24 09:06:32

标签: r matrix coercion

以下代码将3x3逻辑矩阵转换为包含9个元素的向量:

as.numeric(matrix(rep(FALSE, 9), nrow = 3))
# [1] 0 0 0 0 0 0 0 0 0

为什么会发生这种情况,我该如何避免这种情况?如果之前有人问过这个问题,我唯一可以找到的参考是:https://stackoverflow.com/a/15490316/

1 个答案:

答案 0 :(得分:1)

一个选项是先创建一个对象,然后将输出分配给它

m1 <- matrix(rep(FALSE, 9), nrow = 3)
m1[] <- as.numeric(m1)

或hacky选项

+(matrix(rep(FALSE, 9), nrow = 3))
#     [,1] [,2] [,3]
#[1,]    0    0    0
#[2,]    0    0    0
#[3,]    0    0    0

或使用dim

进行分配
`dim<-`(as.numeric(matrix(rep(FALSE, 9), nrow = 3)), c(3, 3))