R 使用向量填充矩阵下三角的更好方法

R 使用向量填充矩阵下三角的更好方法,r,matrix,R,Matrix,我想把一个函数返回的向量重新排列成一个下三角矩阵。作为 resultF <- function(data){ # for example rw <- nrow(data) res <- matrix(0, rw, rw) res[lower.tri(res)] <- 1 return (sort(c(res), decreasing = T)) } r <- 6 c <- 2 data <- matrix(rnorm(100), r,

我想把一个函数返回的向量重新排列成一个下三角矩阵。作为

resultF <- function(data){ # for example
  rw  <- nrow(data)
  res <- matrix(0, rw, rw)
  res[lower.tri(res)] <- 1
  return (sort(c(res), decreasing = T))
}
r <- 6
c <- 2
data <- matrix(rnorm(100), r, c)

result <- resultF(data) # function returns 6 * 6 vector with first elements of the vector containing the values of the lower triangle in this case 36 elements returned, and 1-15 are lower triangle values. 

请提供一个可复制的示例,即提供
f
的工作示例和预期输出。另外,如果您创建了一个随机数作为示例,请不要忘记使用
set.seed
mat[lower.tri(mat)]请提供一个示例,说明哪个值进入哪个单元格。如果您的矩阵较大,您应该研究package matrix实现的三角形稀疏矩阵类。请提供一个可复制的示例,即提供
f
的工作示例和预期输出。另外,如果您创建了一个随机数作为示例,请不要忘记使用
set.seed
mat[lower.tri(mat)]请提供一个示例,说明哪个值进入哪个单元格。如果您的矩阵很大,您应该研究由packagematrix实现的三角形稀疏矩阵类。
mat   <- matrix(0, r, r)
mmt   <- mat[lower.tri(mat)] 
size  <- length(mmt)
val   <- result[1:size]
mat[lower.tri(mat)] <- val
mat
> mat
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    0    0    0    0
[2,]    1    0    0    0    0    0
[3,]    1    1    0    0    0    0
[4,]    1    1    1    0    0    0
[5,]    1    1    1    1    0    0
[6,]    1    1    1    1    1    0