Используя lapply
, я ввел вектор входных данных в функцию, которая для каждого входа возвращает список из двух векторов - возможных n-грамм и их вероятностей.Я получаю список списков (смеется) с такой структурой:
> str(lol)
List of 3
$ :List of 2
..$ np1 : chr [1:7] "a" "years" "the" "my" ...
..$ probs: num [1:7] 0.1481 0.1357 0.0841 0.0698 0.0522 ...
$ :List of 2
..$ np1 : chr [1:167] "the" "a" "my" "years" ...
..$ probs: num [1:167] 0.2745 0.0924 0.0605 0.0437 0.0334 ...
$ :List of 2
..$ np1 : chr [1:9493] "the" "a" "my" "this" ...
..$ probs: num [1:9493] 0.267 0.0777 0.0239 0.0169 0.0158 ...
Но я стремлюсь к единственному списку, в котором все векторы $np1
объединены и все $probs
векторыкак хорошо.Я попытался использовать unlist(..., recursive = F)
, чтобы получить список из двух векторов, и это приблизило меня к тому, что я ищу, чем использование unlist
без рекурсивного флага.
> str(unlist(lapply(inputs.list, function(x){...}), recursive = F))
List of 6
$ np1 : chr [1:7] "a" "years" "the" "my" ...
$ probs: num [1:7] 0.1481 0.1357 0.0841 0.0698 0.0522 ...
$ np1 : chr [1:167] "the" "a" "my" "years" ...
$ probs: num [1:167] 0.2745 0.0924 0.0605 0.0437 0.0334 ...
$ np1 : chr [1:9493] "the" "a" "my" "this" ...
$ probs: num [1:9493] 0.267 0.0777 0.0239 0.0169 0.0158 ...
Но не совсем там ...
Есть ли способ, который поможет мне еще больше объединить сведенный список в список только из двух векторов, как описано?
Вот воспроизводимый пример для работы:
example1 <- list("time in"=list(np1=c("the", "a", "my", "years"), probs=c(0.2745, 0.0924, 0.0605, 0.0437)),"in"=list(np1=c("the", "a", "my", "this"), probs=c(0.267, 0.0777, 0.0239, 0.0169)))
> str(example1)
List of 2
$ time in:List of 2
..$ np1 : chr [1:4] "the" "a" "my" "years"
..$ probs: num [1:4] 0.2745 0.0924 0.0605 0.0437
$ in :List of 2
..$ np1 : chr [1:4] "the" "a" "my" "this"
..$ probs: num [1:4] 0.267 0.0777 0.0239 0.0169