在R中的for循环中将元素添加到嵌套列表

Adding elements to a nested list in for loop in R

我正在尝试将元素添加到循环中的嵌套列表中,但我无法让它工作。问题是我需要使用嵌套名称来定位值,例如nested_list[["test1"]][["test2]], 所以我不能只使用索引。

nested_list <- list()
list_of_nested_node_names <- c("test1", "test2", "test3")
position_in_list <- "nested_list"

for (i in 1:length(list_of_nested_node_names )) {
  position_in_list <<- paste(position_in_list, "[[\"", list_of_node_names[i], "\"]]", sep = "")
  eval(parse(text=position_in_list)) <<- list(1)
}

此问题之前已在以下线程中讨论过,用于添加到列表,但不适用于嵌套列表: Adding elements to a list in for loop in R

为什么我可以在循环中打印 "position_in_list",并且可以使用 "eval(parse(text=position_in_list))" 计算字符串,但我不能在结构中放置数据?

eval(),嗯,计算表达式,所以它对赋值的 LHS 没有真正意义。

您可以使用它:

for (i in 1:length(list_of_nested_node_names )) {
  position_in_list <- paste(position_in_list, "[[\"", list_of_nested_node_names[i], "\"]]", sep = "")
  eval(parse(text = paste(position_in_list, "<- list(1)")))
}

(评估整个作业)。

(另外,我看不出这里需要双箭头赋值)。