我有如下資料:
alist <- list()
vec <- c(1, 2, 3)
我想將一個值(在這種情況下是一個物件)放入一個子串列中。但是當我這樣做時:
for (i in 1:length(vec)) {
alist[[i]][1] <- vec
}
這是出于某種原因不允許的:Error in *tmp* [[i]] : subscript out of bounds。我是否必須初始化每個子串列?如果是這樣,這樣做的語法是什么?
期望的結果:
desired_out <- list( list(alist = c(1, 2, 3) ), list(alist = c(1, 2, 3) ), list(alist = c(1, 2, 3) ))
編輯:
嘗試為整個回圈創建可重現的示例(我的實際資料是回圈中的回圈):
alist <- list()
vec <- c(1, 2, 3)
for (j in 1:2) {
for (i in 1:length(vec)) {
alist[[i]][j] <- vec
}
}
uj5u.com熱心網友回復:
創建一個帶有長度的空串列,然后填寫:
x <- vector(mode = "list", length = 3)
for (j in 1:2) {
for (i in 1:length(vec)) {
# notice double square brackets
x[[ i ]][[ j ]] <- vec
}
}
uj5u.com熱心網友回復:
這符合您的要求,但我認為您的示例對于原始嵌套回圈問題仍然很少:
alist <- list()
vec <- c(1, 2, 3)
for (i in 1:length(vec)) {
alist[[i]] <- list(alist = vec)
}
desired_out <- list(
list(alist = c(1, 2, 3)),
list(alist = c(1, 2, 3)),
list(alist = c(1, 2, 3))
)
identical(alist, desired_out)
#> [1] TRUE
由reprex 包(v2.0.1)于 2021 年 11 月 5 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349186.html
下一篇:R中的方法在svg檔案上裁剪空白
