如何将矢量转换为只填充第一个对角线的矩阵(2d数组)?
x <- 1:3
y <- array(dim=c(3,3))
y[x,x] <- x
> y
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
所以y代替:
[,1] [,2] [,3]
[1,] 1 NA NA
[2,] NA 2 NA
[3,] NA NA 3
这闻起来有一个微不足道的解决方案,但我还没有看到它。
由于
答案 0 :(得分:1)
您可以尝试
(NA^!diag(x))*diag(x)
# [,1] [,2] [,3]
#[1,] 1 NA NA
#[2,] NA 2 NA
#[3,] NA NA 3
或者用较少的代码打高尔夫球
x1 <- diag(x)
x1[lower.tri(x1, diag=FALSE)|upper.tri(x1, diag=FALSE)] <- NA
@David Arenburg建议的其他选项是创建NA矩阵,然后用'x'填充对角线
res <- matrix(NA, length(x), length(x))
diag(res) <- x