当我尝试从创建的数据矩阵中选择数据时,我收到一个错误,我希望有人可以帮助我并修复它。
UseMethod(“ filter_”)中的错误:'filter_'没有适用的方法 应用于类“ c('matrix','double','numeric')”的对象
我尝试通过执行dplyr来调用该函数: 或使用某些管道操作mydata%>%filter(2010)或什至已安装和加载的软件包“冲突”,并给dplyr一个优先级,但没有任何效果。我是r的新人。
Matrix_5c_AVG_Year <- cbind(AVG_SWE_YEAR,AVG_NO[,2],AVG_FI[,2],AVG_EE[,2],AVG_LV[,2],AVG_LT[,2])
colnames(Matrix_5c_AVG_Year) <- c("Year","AVG_SWE1", "AVG_NO1", "AVG_FI1", "AVG_EE1", "AVG_LV1", "AVG_LT1")
mydata<-Matrix_5c_AVG_Year
mydata %>% filter(2010)
我只希望获得2010年数据的输出,并且只能选择一个标头。
答案 0 :(得分:0)
如@brettljausn所评论,您需要将矩阵转换为data.frame。如果您未添加要在其上比较条件值的列名,则在调用filter
时也会出错。
这应该可以说明您的问题和解决方案(由于您使用的是filter
,所以继续tidyverse):
library(tidyverse)
(a <- matrix(c(5,1), 2, 2))
#> [,1] [,2]
#> [1,] 5 5
#> [2,] 1 1
colnames(a) <- c("Year", "AVG_SWE1")
a %>%
filter(Year == 5)
#> Error in UseMethod("filter_"): no applicable method for 'filter_' applied to an object of class "c('matrix', 'double', 'numeric')"
(a2 <- as_tibble(a))
#> # A tibble: 2 x 2
#> Year AVG_SWE1
#> <dbl> <dbl>
#> 1 5 5
#> 2 1 1
a2 %>%
filter(Year == 5)
#> # A tibble: 1 x 2
#> Year AVG_SWE1
#> <dbl> <dbl>
#> 1 5 5
由reprex package(v0.3.0)于2019-07-31创建
由于您是新手,所以建议您阅读https://r4ds.had.co.nz/的第1-16章。
答案 1 :(得分:0)
多亏了larsoevlisen,我知道我的数据是一个矩阵,无法以这种方式进行操作,因此我不得不将它们转换为data.frame()
来过滤所需的数据。
最终解决方案:
Matrix_5c_AVG_Year < cbind(AVG_SWE_YEAR,AVG_NO_YEAR[,2],AVG_FI_YEAR[,2],AVG_EE_YEAR[,2],AVG_LV_YEAR[,2],AVG_LT_YEAR[,2])
Matrix_5c_AVG_Year <-data.frame(Matrix_5c_AVG_Year)
colnames(Matrix_5c_AVG_Year) <- c("Year","AVG_SWE1", "AVG_NO1",
"AVG_FI1", "AVG_EE1", "AVG_LV1", "AVG_LT1")