Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.4k views
in Technique[技术] by (71.8m points)

r - Error in UseMethod("filter_") : no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"

Was trying to filter numeric value >100 to create a new vector , but am getting the error. tried upload dplyr package & removing as.numeric with no luck . any help much appreciated.

c1<-c(1000,200) class(c1) [1] "numeric" outies<-c1%>%filter(c1>as.numeric(100)) Error in UseMethod("filter_") : no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

As pointed out by @stefan, the filter() function in dplyr is used for filtering data frames and not vectors. @stefan's suggestion is to put your vector in a data frame (as one column) and then use the filter() function on it.

In case you absolutely need to keep your data in a vector and you would also like to use the tidyverse style of coding (i.e. with the pipe operator %>%), you could use the keep function inside the purrr package.

library(purrr)

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

After all this, my personal opinion is that base R is more appropriate for filtering vectors:

c1[c1 > 100]
[1] 1000  200

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...