преобразовать список в фрейм данных - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь преобразовать список во фрейм данных с двумя столбцами.

Список исходит из следующего кода,

test <- sapply(data_frame_1, table)

каждый столбец data_frame_1 имеет 70 строк с двумя значениями «1» и «2», поэтому я считаю время каждого значения в каждом столбце, приведенный выше код выдает мне вывод, подобный этому:

test["1_hypothetical_protein.faa"]
$`1_hypothetical_protein.faa`

 1  2 
69  1 

Мне нужен фрейм данных с двумя столбцами «1» и «2», например:

                               1 2 
1_hypothetical_protein.faa     1 69

Я пробовал со следующими опциями

do.call("rbind", lapply(test, as.data.frame))

и это дает


                                 Var1 Freq
1_hypothetical_protein.faa.1        1   69
1_hypothetical_protein.faa.2        2    1

Я тоже пробовал с

new_df <- data.frame(t(data.frame(test)))

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Вот как я бы сделал это в тидиверсе:

library(dplyr)
library(tidyr)

dat <- list(iris, iris)
names(dat) <- c("iris_first", "iris_second")

lapply(dat, function(x) x %>%
         group_by(Species) %>%
         summarise(count = n())) %>%
  bind_rows(.id = "id") %>%
  spread(Species, count)

# A tibble: 2 x 4
  id          setosa versicolor virginica
  <chr>        <int>      <int>     <int>
1 iris_first      50         50        50
2 iris_second     50         50        50
0 голосов
/ 11 июня 2019

Вы можете сделать это без приведения к фрейму данных перед привязкой, т.е.

l1 <- list(iris, iris)

do.call(rbind, lapply(l1, function(i) table(i$Species)))
#     setosa versicolor virginica
#[1,]     50         50        50
#[2,]     50         50        50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...