2017-03-02 41 views
1

我有一個列表輸出看起來像這樣的片段:如何變換成列表查找表

[[1]] 
[1] 109 

[[2]] 
integer(0) 

[[3]] 
[1] 80 

有沒有辦法把它改造成這種格式?

C1 C2 
1 109 
2 0 (or NA) 
3 80 

不知道在哪裏甚至開始......如果我選擇不公開它,我發現我失去了我的整數(0)的位置,這是非常重要,我保持。

+0

http://stackoverflow.com/questions/17388096/convert-list-with-null-entres-to-data-frame-的可能重複做在-r – akrun

回答

5

隨着as.numeric可以保留integer(0)NA

data.frame(C1 = seq(length(lst)), C2 = as.numeric(lst)) 

# C1 C2 
#1 1 109 
#2 2 NA 
#3 3 80 
+1

也'seq_along(lst)'。 – lmo

2

L = list(109,integer(0),80) 
sapply(L, '[', 1:1) #OR sapply(L, function(a) a[1]) 
#[1] 109 NA 80 

#If you need a data.frame 

data.frame(cbind(1:length(L),lapply(L, '[', 1:1))) 
# X1 X2 
#1 1 109 
#2 2 NA 
#3 3 80 
+1

,讓我通過! – val

+0

我不熟悉'['你能解釋嗎?我假設1:1只是引用每個列表中的第一個元素。 – val

+1

[Here](http://stackoverflow.com/a/19261054/7128934)是一個很好的解釋 –

1

我們可以通過stack

stack(setNames(lapply(lst, `length<-`, 1), seq_along(lst)))[2:1]