示例数据:
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
答案 0 :(得分:3)
我们循环执行&#39; l&#39;,if
list
元素的序列NULL
我们返回NULL
或cbind
与相应的序列。
lapply(seq_along(l), function(i) if(is.null(l[[i]])) NULL
else cbind(l[[i]], i))
或者,我们可以获取NULL
元素的索引,并且只使用相应的&#39; id&#39;
ind <- !sapply(l, is.null)
l[ind] <- Map(cbind, l[ind], id=seq_along(l)[ind])