我正在努力为此找到一个合适的问题,所以我自己都要冒一个重复的问题
我已经提取了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"))
答案 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))