-->

误差在`* TMP *`[[K]]:下标出中的R界(Error in `*tmp*`[[k]] :

2019-07-18 05:44发布

我想问,为什么我得到这个错误,而初始化例如向量的列表或一些其他类型的,我该如何解决?

> l <- list()
> l[[1]][1] <- 1
Error in `*tmp*`[[1]] : subscript out of bounds

这是整个代码,我需要的,其实我想这样的载体列表:

mcorrelation <- list()
for(k in 1:7){
    for (ind in 1:7){
        mcorrelation[[k]][ind] <- co$estimate
    }
}

我应该初始化整个列表中,或者是有没有收到此错误的任何其他方式?

Answer 1:

由于l还没有AA载体,你不想指定列表的第一个元素的位置。 尝试:

l <- list()
l[[1]] <- 1

对于这个新的载体添加到特定的地方附加价值,最好是设置矢量了中提交值的已知长度(对于速度的原因,为什么在这里 )。 下面是一个例子循环:

n <- 100
l <- list()
l[[1]] <- NaN*seq(n)
for(i in seq(n)){
    l[[1]][i] <- i
}

关于你提到的具体的例子:

k <- 7
ind <- 7
mcorrelation <- vector(mode="list", k)
for(i in seq(k)){
    mcorrelation[[i]] <- NaN*seq(ind)
    for (j in seq(ind)){
        mcorrelation[[i]][j] <- rnorm(1)
    }
}
mcorrelation 


Answer 2:

在“[”功能允许多个任务没有循环:

> y <- NULL
> y
NULL
> y[cbind(1:2, 1:2)] <- list( list(1,2), list(2,3))
> y
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2


[[2]]
[[2]][[1]]
[1] 2

[[2]][[2]]
[1] 3


文章来源: Error in `*tmp*`[[k]] : subscript out of bounds in R
标签: r subscript