заменить вектор на верхнюю матрицу треугольника с другой длиной - PullRequest
1 голос
/ 10 апреля 2020

Я хочу иметь треугольную матрицу для вектора, когда длина вектора меньше длины замены. например:

v<- c(1,2,3,4,5,6)

и

mat<- matrix(0,5,5).

Если я использую

mat[upper.tri(mat, diag=FALSE)]<- v

, результат:

     [,1] [,2] [,3] [,4] [,5]
[1,]    0    1    2    4    1
[2,]    0    0    3    5    2
[3,]    0    0    0    6    3
[4,]    0    0    0    0    4
[5,]    0    0    0    0    0

Но я не хочу заменять больше, чем длина вектора в матрице. И я хочу иметь:

[1,]    0    1    2    4    0
[2,]    0    0    3    5    0
[3,]    0    0    0    6    0
[4,]    0    0    0    0    0
[5,]    0    0    0    0    0 

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете настроить length из v на верхний треугольник. Это дает некоторые NA значения, которые можно заменить нулями.

u.tri <- upper.tri(mat, diag=FALSE)
mat[u.tri] <- `length<-`(v, length(u.tri)) 
mat[is.na(mat)] <- 0
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    0    1    2    4    0
# [2,]    0    0    3    5    0
# [3,]    0    0    0    6    0
# [4,]    0    0    0    0    0
# [5,]    0    0    0    0    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...