конвертировать список R в tibble () - мурлыкать или лучше? - PullRequest
0 голосов
/ 04 ноября 2018
library(tidyverse)
library(purrr)
x <- c(20, 30, 58)
n <- 100

mylist <- data_frame(x = c(0, x), n) %>%
  distinct() %>%
  filter(x >= 0 & x < n) %>%
  arrange(x) %>%
  bind_rows(data_frame(x = n)) %>%
  mutate(lag_x = lag(x)) %>%
  mutate(y = x - lag_x) %>%
  filter(!is.na(y)) %>%
  summarise(n = list(rep(row_number(), y))) %>%
  pull(n)

Как лучше всего преобразовать приведенный выше список в тиббл? мурлыкать может? На самом деле я собираюсь использовать этот список в вызове mutate, чтобы добавить этот список в виде столбца к другому фрагменту.

# A tibble: 100 x 1
    grp
  <dbl>
1     1
2     1
3     1
4     1
etc...

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

unnest() & rename()

library(tidyverse)

x <- c(20, 30, 58)
n <- 100

data_frame(x = c(0, x), n) %>%
  distinct() %>%
  filter(x >= 0 & x < n) %>%
  arrange(x) %>%
  bind_rows(data_frame(x = n)) %>%
  mutate(lag_x = lag(x)) %>%
  mutate(y = x - lag_x) %>%
  filter(!is.na(y)) %>%
  summarise(n = list(rep(row_number(), y))) %>%
  unnest(n) %>% 
  rename(grp = n)
## # A tibble: 100 x 1
##      grp
##    <int>
##  1     1
##  2     1
##  3     1
##  4     1
##  5     1
##  6     1
##  7     1
##  8     1
##  9     1
## 10     1
## # ... with 90 more rows
0 голосов
/ 04 ноября 2018

Я бы использовал комбинацию tibble и unlist. Таким образом:

new_tibble <- tibble(grp = unlist(mylist))

##if you want to add it as column to a data frame, here is how I'd do it
mock_df <- tibble(x = rnorm(100),
              y = rnorm(100))

 mock_df %>% mutate(grp = unlist(mylist))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...