Как сделать матрицу 3х3 с предварительно обработанными значениями в R? - PullRequest
0 голосов
/ 03 мая 2018

У меня уже есть значения e1, e2, e3, e4, e5, e6, тогда как я могу поместить это в матрицу 3x3 в следующей форме в RStudio:

   [1] [2] [3]
[1] e1  e4  e5
[2] e4  e2  e6
[3] e5  e6  e3 

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Синтаксис по столбцам

matrix(c(1, 4, 5, 
         4, 2, 6, 
         5, 6, 3), ncol=3)

#      [,1] [,2] [,3]
# [1,]    1    4    5
# [2,]    4    2    6
# [3,]    5    6    3
0 голосов
/ 03 мая 2018

Заполните недиагонали, затем заполните диагональ:

x <- 1:6

out <- matrix(nrow=3,ncol=3)
out[c(which(lower.tri(out)), which(upper.tri(out)))] <- tail(x,3)
diag(out) <- head(x,3)

#     [,1] [,2] [,3]
#[1,]    1    4    5
#[2,]    4    2    6
#[3,]    5    6    3
0 голосов
/ 03 мая 2018
vec2mat1=function(vec){
  l=length(vec)
  p=round(uniroot(function(x)x*(x+1)/2-l,c(0,1))[[1]],0)
  a=diag(vec[1:p],p)
  a[lower.tri(a)]=tail(vec,-p)
  a[upper.tri(a)]=t(a)[upper.tri(a)]
  a
}
vec2mat1(1:6)
     [,1] [,2] [,3]
[1,]    1    4    5
[2,]    4    2    6
[3,]    5    6    3

  vec2mat1(1:10)
    [,1] [,2] [,3] [,4]
[1,]    1    5    6    7
[2,]    5    2    8    9
[3,]    6    8    3   10
[4,]    7    9   10    4
...