第N个列表条目为id

时间:2015-10-06 16:01:21

标签: r

示例数据:

  l <- list(NULL, NULL, NULL, NULL, data.frame(x=1,z=5))

我曾尝试过其他人:

 lapply(1:length(l), function(i) l$id <- i)

期望的结果:

l
[[1]]
 NULL

[[2]]
 NULL

[[3]]
 NULL

[[4]]
 NULL

[[5]]
  id x z 
1  5 1 5  

1 个答案:

答案 0 :(得分:3)

我们循环执行&#39; l&#39;,if list元素的序列NULL我们返回NULLcbind与相应的序列。

 lapply(seq_along(l), function(i) if(is.null(l[[i]])) NULL
                           else cbind(l[[i]], i))

或者,我们可以获取NULL元素的索引,并且只使用相应的&#39; id&#39;

来cbind非空元素的子集
 ind <- !sapply(l, is.null)
 l[ind] <- Map(cbind, l[ind], id=seq_along(l)[ind])