2015-10-06 76 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