我无法将列表转换为下三角矩阵

时间:2017-10-22 13:13:37

标签: r

我有两个(假和真)下三角矩阵。我想用我选择的数字转换所有真值。我写了代码,但它不起作用。你给出的例子与我的问题非常相似(非常复杂)。

这是我的代码:

ps

以下是需要取> Matrix [[1]] [,1] [,2] [,3] [,4] [,5] [1,] FALSE FALSE FALSE FALSE FALSE [2,] TRUE FALSE FALSE FALSE FALSE [3,] TRUE TRUE FALSE FALSE FALSE [4,] TRUE TRUE TRUE FALSE FALSE [5,] TRUE TRUE TRUE TRUE FALSE [[2]] [,1] [,2] [,3] [,4] [,5] [1,] FALSE FALSE FALSE FALSE FALSE [2,] TRUE FALSE FALSE FALSE FALSE [3,] TRUE TRUE FALSE FALSE FALSE [4,] TRUE TRUE TRUE FALSE FALSE [5,] TRUE TRUE TRUE TRUE FALSE np1 <- 10 np2 <- 10 np <-list(np1, np2) 个值的位数的数字。

TRUE

为此,我写了这段代码:

new <- list(c(1,2,3,4,5,6,7,8,9,10),c(1,2,3,4,5,6,7,8,9,10))

1 个答案:

答案 0 :(得分:1)

请尝试以下操作。

new1 <- lapply(1:2, function(i) matrix(0, 5, 5))
new1 <- lapply(1:2, function(i){new1[[i]][Matrix[[i]]][]  <- 1:np[[i]]; new1[[i]]})
new1

您错过了空[],强制R保留对象的尺寸,在本例中为5x5矩阵new1。此外,第二个lapply中的匿名函数需要返回一些内容,因此以下完全等效函数可能更具可读性。

new1 <- lapply(1:2, function(i){
            new1[[i]][Matrix[[i]]][]  <- 1:np[[i]]  # note the last []
            new1[[i]]
        })