Используя dplyr, вы можете сделать это:
library(dplyr)
df <- lapply(l, function(x) as.data.frame(t(x), stringsAsFactors = FALSE)) %>%
bind_rows()
df
#> V1 V2 V3 V4 V5 V6 V7
#> 1 nucl 21.5 cyto_nucl 14 cyto 5.5 <NA> <NA> <NA> <NA>
#> 2 plas 25 <NA> <NA> <NA> <NA> <NA> <NA>
#> 3 mito 9 plas 9 E.R. 5 golg 2 vacu 2 <NA> <NA>
#> 4 mito 9 cyto 5.5 cyto_nucl 5.5 nucl 4.5 extr 2 pero 2 golg 2
Или, если вы хотите разделить строки, в которых есть пробелы:
df <- lapply(l, function(x) {
x <- unlist(strsplit(x, " "))
x <- x[x != ""]
as.data.frame(t(x), stringsAsFactors = FALSE)
}) %>%
bind_rows()
df
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
#> 1 nucl 21.5 cyto_nucl 14 cyto 5.5 <NA> <NA> <NA> <NA> <NA> <NA>
#> 2 plas 25 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
#> 3 mito 9 plas 9 E.R. 5 golg 2 vacu 2 <NA> <NA>
#> 4 mito 9 cyto 5.5 cyto_nucl 5.5 nucl 4.5 extr 2 pero 2
#> V13 V14
#> 1 <NA> <NA>
#> 2 <NA> <NA>
#> 3 <NA> <NA>
#> 4 golg 2
data
l <- list(
c("nucl 21.5", " cyto_nucl 14", " cyto 5.5" ),
"plas 25",
c("mito 9", " plas 9", " E.R. 5", " golg 2", " vacu 2"),
c("mito 9", " cyto 5.5", " cyto_nucl 5.5", " nucl 4.5", " extr 2", " pero 2", " golg 2")
)