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

时间:2015-08-14 22:21:12

标签: r list assign

假设我有一个空列表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

1 个答案:

答案 0 :(得分:1)

我可能遗漏了一些东西,但我不明白为什么你需要使用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)
}