Как извлечь отдельный элемент из списка значений функции, используя dplyr / magrittr - R - PullRequest
0 голосов
/ 23 июня 2018

Я пишу код, используя dplyr и каналы, и использую функцию NbClust, которая возвращает список объектов с именами All.index, All.CriticalValues, Best.nc, Best.partition.

Таким образом, я могу присвоить свое выражение некоторой переменной и затем обратиться к элементу Best.nc как variable$Best.nc. Но как я могу извлечь Best.nc элемент, используя трубы?

Я пытался purrr::map('[[', 'Best.nc'), но это не сработало.

1 Ответ

0 голосов
/ 23 июня 2018

Вы можете напрямую использовать базу R [[ как функцию без map:

lst <- list(a = 1, b = 2)

lst %>% `[[`('a')
# [1] 1

variable %>% `[[`('Best.nc')

Или с purrr, вы можете использовать функцию pluck и просто указать индекс элемента или имя:

library(purrr)

lst %>% pluck('a')
# [1] 1
lst %>% pluck(1)
# [1] 1

Для вашего случая:

variable %>% pluck('Best.nc')

Преимущество экстрактора от pluck до [[ заключается в том, что вы можете глубоко индексировать вложенный список, например:

lst <- list(a = list(x = list(), y = 'm', z = 1:3), b = 2)

Для доступа к элементу z, вложенному в a:

lst %>% pluck('a', 'z')
# [1] 1 2 3 
...