2015-10-06 73 views
1

的样本数据:第N个列表条目ID

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 

回答

3

我们遍历 'L' 的序列,iflist元素是NULL我们返回NULL否则cbind与相应的序列。

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

或者,我们可以得到NULL元素的索引和cbind唯一的非null元素的子集对应的“身份证”

ind <- !sapply(l, is.null) 
l[ind] <- Map(cbind, l[ind], id=seq_along(l)[ind]) 
当然
+1

!今天只是简单的问题:)。谢谢。 – Maximilian

+1

你太快了我的朋友 –

+0

@RichardScriven我早些时候在想索引方法,但是当OP使用它时,我发布了'lapply'。 – akrun