Раскройте список и сохраните имена - PullRequest
0 голосов
/ 10 апреля 2020

Я подозреваю, что это тривиальная проблема, но я не могу понять это. У меня есть вывод из упакованной функции, которая генерирует эти данные списка:

output <- list(structure(c(69, 1.52224832314379, 5.1, 0.362256088534843, 
46.9, -0.0364138250590129, 90.7, 3.0809104713466), .Dim = c(2L, 
4L), .Dimnames = list(structure(c("N", "k"), .Dim = 1:2), c("Estimate", 
"SE", "95% LCI", "95% UCI"))))

Я хочу превратить это в кадр данных со столбцами c («Параметр», «Оценка», «SE», « 95% LCI "," 95% UCI ") где параметр = c (" N "," k ")

Я пробовал dplyr :: unnest (выход) no applicable method for 'unnest' applied to an object of class "list", unlist (выход ), который возвращает c(69, 1.52224832314379, 5.1, 0.362256088534843, 46.9, -0.0364138250590129, 90.7, 3.0809104713466), но не сохраняет ни одного из имен. purrr :: flatten (output) также не сохраняет ни одного из имен.

Между прочим, я также не могу понять, как вытащить имена из списка - dimnames () и names () возвращают NULL .

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Если вы посмотрите на классы ваших объектов

> class(output)
[1] "list"

> class(output[[1]])
[1] "matrix"

Вы можете просто сделать:

library(magrittr)
df <- as.data.frame(output) %>% tibble::rownames_to_column("Parameter")

  Parameter  Estimate        SE    X95..LCI X95..UCI
1         N 69.000000 5.1000000 46.90000000 90.70000
2         k  1.522248 0.3622561 -0.03641383  3.08091
1 голос
/ 10 апреля 2020

Вы можете использовать следующее:

library(tidyverse) # alternatively, you can load purrr and dplyr libraries only

output %>% 
  pluck(1) %>% 
  as_tibble(rownames = NA) %>% 
  rownames_to_column(var = "Parameter")

# A tibble: 2 x 5
  parameter Estimate    SE `95% LCI` `95% UCI`
  <chr>        <dbl> <dbl>     <dbl>     <dbl>
1 N            69    5.1     46.9        90.7 
2 k             1.52 0.362   -0.0364      3.08
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...