`*tmp*`[[k]]中的错误:下标超出R的范围

hor*_*ora 6 r subscript

我想问一下为什么我在初始化例如矢量或其他类型的列表时会出现此错误,我该如何解决?

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

这是我需要的整个代码,实际上我想要一个这样的向量列表:

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

我应该提前初始化整个列表还是有其他方法可以避免出现此错误?

Mar*_*box 6

由于l还没有矢量,因此您不希望在列表的第一个元素中指定位置.尝试:

l <- list()
l[[1]] <- 1
Run Code Online (Sandbox Code Playgroud)

为了向此新向量中的特定位置添加其他值,最好将向量设置为要记录的已知值的长度(出于速度原因,请参阅此处的原因).这是一个示例循环:

n <- 100
l <- list()
l[[1]] <- NaN*seq(n)
for(i in seq(n)){
    l[[1]][i] <- i
}
Run Code Online (Sandbox Code Playgroud)

关于你的具体例子:

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 
Run Code Online (Sandbox Code Playgroud)