Ошибка в методе использования («filter_»): нет применимого метода для ‘filter_’, применяемого к объекту класса «c (‘double’, ‘numeric’)»

#r

#r

Вопрос:

Пытался отфильтровать числовое значение> 100 для создания нового вектора, но получаю ошибку. безуспешно пытался загрузить пакет dplyr и удалить как.numeric . любая помощь очень ценится.

c1<-c(1000,200) class(c1) [1] «числовые» выходы<-c1%>%filter(c1> как.числовой (100)) Ошибка в методе использования («filter_»): нет применимого метода для ‘filter_’, применяемого к объекту класса «c (‘double’, ‘numeric’)»

Комментарии:

1. filter предназначен для фильтрации данных.кадры. Он не работает с векторами. Может быть, вы хотите data.frame(c1 = c(1000,200) ) %>% filter(c1 > 100)

Ответ №1:

Как указано @stefan, filter() функция in dplyr используется для фильтрации фреймов данных, а не векторов. предложение @stefan заключается в том, чтобы поместить ваш вектор во фрейм данных (в виде одного столбца), а затем использовать filter() для него функцию.

В случае, если вам абсолютно необходимо сохранить свои данные в векторе, и вы также хотели бы использовать стиль кодирования tidyverse (т. Е. С оператором pipe %>% ), Вы можете использовать keep функцию внутри purrr пакета.

 library(purrr)

c1 <- c(1000, 200)
 
keep(c1,  ~ .x > 100) # both values in the vector are greater than 100
[1] 1000  200
 

После всего этого мое личное мнение таково, что база R больше подходит для фильтрации векторов:

 c1[c1 > 100]
[1] 1000  200
 

Комментарии:

1. Большое спасибо за предоставление различных вариантов.