select
работает, когда данные data.frame
, а не по имени vector
.Одним из вариантов будет преобразование в два столбца tibble
с enframe
(из tibble
), filter
столбцами 'name' и затем deframe
для создания именованного vector
library(tibble)
librarry(dplyr)
dat %>%
enframe %>%
filter(name %in% c("Clyde", "Frank")) %>%
deframe
# Clyde Frank
# 1 3
Если мы используем magrittr
, другой вариант - extract
(не то, что в tidyr
есть похожая функция - поведение отличается), который является псевдонимом для [
library(magrittr)
dat %>%
extract(c("Clyde", "Frank"))
# Clyde Frank
# 1 3
Или, если мы хотим использовать select
, преобразовать его в 4-столбец data.frame / tibble
dat %>%
t %>%
as_tibble %>%
select(Clyde, Frank)
Здесь мы сначала преобразуем его в matrix
с транспонированием вектора(поскольку vector
и matrix
могут содержать только один класс, это нормально), затем преобразуйте его в tibble
(as_tibble
) и используйте select
для выбора столбцов с именами столбцов без кавычек
В base R
просто используется names
dat[c("Clyde", "Frank")]