Удобно извлечь именованный вектор из data.frame, используя dplyr / tidy? - PullRequest
1 голос
/ 28 апреля 2020

Как мы можем извлечь вектор с именем , имена которого берутся из одного столбца data.frame, а значения из другого, удобно, с помощью канала? (и без назначения между)

Вот очень ручной подход

vec <- iris %>% 
  arrange(Sepal.Length) %>% 
  pull(Sepal.Length)

names_for_vec <- iris %>% 
  arrange(Sepal.Length) %>% 
  pull(Species)


names(vec) <- names_for_vec 
names(vec)

# Named vector
vec

В идеале, я хотел бы достичь того же результата в одной строке

Что я я пробовал

я пробовал варианты двух верхних ответов здесь , а также другую идею использования "names<-"():


iris %>% 
  arrange(desc(Sepal.Length)) %>% 
  pull(Sepal.Length) %>%  
  `names<-`() # But we can't access the Species column as it was 2 pipes back..

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Метод pull.data.frame уже принимает аргумент для именования. Я думал, что это было доступно ранее, но это может быть только в dplyr 1.0, в этом случае вам нужно будет установить из репозитория tidyverse\dplyr Github.

iris %>%
  arrange(Sepal.Length) %>%
  pull(Sepal.Length, Species)
1 голос
/ 28 апреля 2020

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

library(dplyr)
iris %>%  arrange(Sepal.Length) %>% pull(Sepal.Length) %>%
  setNames(iris %>% arrange(Sepal.Length) %>% pull(Species))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...