如何在 R 中的 for 循环中的列表中分配列表
How to assign a list within list in a for loop in R
我试图从方法论上找出为什么我的下面的代码不起作用。
formatted_data
是一个包含 20 个不同列的不同数据框的列表。 ff_demog_table
是一个函数,用于格式化 formatted_data
内的数据帧。最后,formatted_tables
应该是保存不同格式数据框的列表。
我想遍历 formatted_data
列表中的每个数据框,然后遍历每个数据框中的每一列。似乎我无法直接将 formatted_tables
分配为 [[i]][[j]]
但如果我只使用 formatted_tables[[i]]
.
它将显示最后一个格式化的列
例如,如果我尝试运行下面的代码,下标越界。为什么?
a <- list()
a[[1]][[1]] <- 7
但是,如果我 运行 下面的代码将起作用。
b <- list()
b[[1]] <- 7
b[[1]][[1]] <- 8
我无法共享数据,但一个简单的可重现示例只是两个数据框,其中多列保存在一个列表中,其中列由因子组成。
for (i in seq_along(formatted_data)) {
for (j in 1:ncol(formatted_data[[i]])) {
formatted_tables[[i]][[j]] <- ff_demog_table(formatted_data[[i]], colnames(formatted_data[[i]][j]))
}
}
简而言之,任何有助于理解 R 的列表索引的帮助都会非常有帮助。谢谢!
我们可以用特定的 length
初始化 list
。在下面的代码中,它是长度为 1 的 list
而不是长度为 0 的 list
和 list()
a <- vector('list', 1)
a[[1]][[1]] <- 7
或者如果我们想从 length
0 列表构造,用 list
包裹在 <-
的右侧
a <- list()
a[1] <- list(list(7))
-输出结构
> str(a)
List of 1
$ :List of 1
..$ : num 7
我试图从方法论上找出为什么我的下面的代码不起作用。
formatted_data
是一个包含 20 个不同列的不同数据框的列表。 ff_demog_table
是一个函数,用于格式化 formatted_data
内的数据帧。最后,formatted_tables
应该是保存不同格式数据框的列表。
我想遍历 formatted_data
列表中的每个数据框,然后遍历每个数据框中的每一列。似乎我无法直接将 formatted_tables
分配为 [[i]][[j]]
但如果我只使用 formatted_tables[[i]]
.
例如,如果我尝试运行下面的代码,下标越界。为什么?
a <- list()
a[[1]][[1]] <- 7
但是,如果我 运行 下面的代码将起作用。
b <- list()
b[[1]] <- 7
b[[1]][[1]] <- 8
我无法共享数据,但一个简单的可重现示例只是两个数据框,其中多列保存在一个列表中,其中列由因子组成。
for (i in seq_along(formatted_data)) {
for (j in 1:ncol(formatted_data[[i]])) {
formatted_tables[[i]][[j]] <- ff_demog_table(formatted_data[[i]], colnames(formatted_data[[i]][j]))
}
}
简而言之,任何有助于理解 R 的列表索引的帮助都会非常有帮助。谢谢!
我们可以用特定的 length
初始化 list
。在下面的代码中,它是长度为 1 的 list
而不是长度为 0 的 list
和 list()
a <- vector('list', 1)
a[[1]][[1]] <- 7
或者如果我们想从 length
0 列表构造,用 list
包裹在 <-
a <- list()
a[1] <- list(list(7))
-输出结构
> str(a)
List of 1
$ :List of 1
..$ : num 7