我有两个(假和真)下三角矩阵。我想用我选择的数字转换所有真值。我写了代码,但它不起作用。你给出的例子与我的问题非常相似(非常复杂)。
这是我的代码:
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))
答案 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]]
})