2015-05-12 118 views
4

我想將字符串列表轉換爲數據框。 給定結構:如何將字符串列表轉換爲數據框?

lst <- list(NULL, "PSYC", c("PSYC", "PHIL"), "PHIL") 

我想產生的

 Index  major_cd 
     1   NULL 
     2   PSYC 
     3   PSYC 
     3   PHIL 
     4   PHIL 

注意一個數據幀在列表中的第三個項目是如何變成2行中的數據幀。

+1

可能需要用一個字「NULL」來代替'NULL'左右,以獲得所需的輸出 – akrun

+1

以akruns COM你可以做一些醜陋的事情,比如'cbind.data.frame(Index = rep(seq(length(l)),lapply(l,length)),major_cd = unlist(l))',其基數爲R –

回答

6

我們可以用「NA」或「NULL」代替空元素在「善堂」和

lst[sapply(lst, is.null)] <- NA 

或者作爲@大衛Arenburg提到設置的「善堂」的名稱後使用unnesttidyr在評論中,設置爲"NULL",而不是NA會得到所需要的輸出顯示

library(tidyr) 
unnest(setNames(lst, seq_along(lst)), Index) 
# Index x 
#1  1 <NA> 
#2  2 PSYC 
#3  3 PSYC 
#4  3 PHIL 
#5  4 PHIL 
+1

或者在R中,stack(setNames(lapply(lst,function(x)replace(x,is.null(x),NA)),seq_along(lst)))''。 – A5C1D2H2I1M1N2O1R2T1