不同长度的字符向量列表到数据框中

时间:2017-07-17 09:30:28

标签: r list dataframe

我正在努力为此找到一个合适的问题,所以我自己都要冒一个重复的问题

我已经提取了WD的文件夹结构,我想将名称粘贴到数据框中,每个列代表文件夹结构的一个级别。

使用strsplit我最终得到一个字符向量列表,其中每个元素代表文件夹级别的名称。例如

folders<-list(c("Main") , c("Main","Mid"), c("Main", "Mid", "Sub"))

从中获取数据框的最简单方法是什么?在这种情况下,我想要三列,但我有几个级别(可能低至六级)

预期结果(NA可以是&#34;&#34;):

data.frame(Level1=c("Main", "Main", "Main"), Level2=c(NA,"Mid", "Mid"), 
           Level3=c(NA,NA,"Sub"))

1 个答案:

答案 0 :(得分:2)

最简单的是stri_list2matrix

library(stringi)
df <- as.data.frame(stri_list2matrix(folders, byrow = TRUE), stringsAsFactors=FALSE)
names(df) <- paste0("Level", seq_along(df))
df
#   Level1 Level2 Level3
#1   Main   <NA>   <NA>
#2   Main    Mid   <NA>
#3   Main    Mid    Sub

但是,这也可以通过base R

解决
m1 <- max(lengths(folders))
d1 <- as.data.frame(do.call(rbind, lapply(folders, `length<-`, m1)), stringsAsFactors= FALSE)
names(d1) <- paste0("Level", seq_along(d1))