Сохранять имена при удалении именованного столбца списка - PullRequest
0 голосов
/ 21 июня 2019

Вот мое представление:

make_named_list <- function(x) {
  list(apple = 1, banana = 2, carrot = 3)
}

tibble(x = 1:3, y = 2:4) %>% 
  mutate(z = map(x, make_named_list)) %>% 
  unnest() %>% 
  pull(z)

Вывод - это список без имен, но я хотел бы вывести именованный список.Я посмотрел на связанный вопрос здесь , но я не уверен, что решение применимо к моему (более простому?) Сценарию.

Чтобы было понятно, желаемый результат:

list(apple = 1, banana = 2, carrot = 3, 
     apple = 1, carrot = 2, banana = 3, 
     apple = 1, banana = 2, carrot = 3)

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Похоже, нам просто нужно rep

rep(make_named_list(3), 3)
#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

Или, если мы используем tidyverse, тогда используйте flatten

tibble(x = 1:3, y = 2:4) %>% 
    transmute(z = map(x, make_named_list)) %>% 
    pull(z) %>% 
    flatten
#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3
1 голос
/ 21 июня 2019

В зависимости от требований к выходу вы можете попробовать один из следующих

library(tidyverse)

tibble(x = 1:3, y = 2:4) %>% 
  mutate(z = map(x, make_named_list)) %>%
  pull(z) 

#[[1]]
#[[1]]$apple
#[1] 1

#[[1]]$banana
#[1] 2

#[[1]]$carrot
#[1] 3


#[[2]]
#[[2]]$apple
#[1] 1
#.....

Или

tibble(x = 1:3, y = 2:4) %>% 
   mutate(z = map(x, make_named_list)) %>%
   pull(z) %>% unlist() 

# apple banana carrot  apple banana carrot  apple banana carrot 
#     1      2      3      1      2      3      1      2      3 

Или

tibble(x = 1:3, y = 2:4) %>% 
   mutate(z = map(x, make_named_list)) %>%
   pull(z) %>% unlist() %>% as.list()

#$apple
#[1] 1

#$banana
#[1] 2

#$carrot
#[1] 3

#$apple
#[1] 1
#... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...