R:对列表元素使用 assign()

R: using assign() for list elements

假设我有一个空列表grid。是否可以使用 assign() 将多个数据框分配给列表元素?

grid <- list()

assign(grid[[1]],data.frame(x=1:4,y=5:8))
assign(grid[[2]],data.frame(x=2:4,y=6:8))

这样你会得到如下输出:

> grid
[[1]]
  x  y
  1  5
  2  6
  3  7
  4  8
[[2]]
  x  y
  2  6
  3  7
  4  8

代码:

grid <- list()
type = "a"

for(k in 1:3){
  assign(paste0("grid[[",k,"]]"),ifelse(type=="a",
                data.frame(x=1:4,y=5:8),
                data.frame(x=2:4,y=6:8)))
}

期望的输出:(因为类型总是 "a")

> grid
[[1]]
  x  y
  1  5
  2  6
  3  7
  4  8
[[2]]
  x  y
  1  5
  2  6
  3  7
  4  8
[[3]]
  x  y
  1  5
  2  6
  3  7
  4  8

我可能遗漏了什么,但我完全不明白您为什么需要使用 assign()?这不是你想要的吗?

grid <- list()
type = "a"

for(k in 1:3){
    if(type=="a") grid[[k]] <- data.frame(x=1:4,y=5:8)
}

编辑:

for(k in 1:3){
    if(type=="a") grid[[k]] <- data.frame(x=1:4,y=5:8)
    if(type=="b") grid[[k]] <- data.frame(x=2:4,y=6:8)
}