如何修复UseMethod(“过滤器”)中的dplyr filter()错误

如何修复UseMethod(“过滤器”)中的dplyr filter()错误,r,select,dplyr,R,Select,Dplyr,当我试图从我创建的数据矩阵中选择一个数据时,我收到一个错误,我希望有人能帮助我解决并修复它 UseMethodfilter\中出错:“filter\没有适用的方法” 应用于c类“矩阵”、“双精度”、“数值”的对象 我尝试通过执行dplyr:调用该函数: 或者通过使用一些管道操作mydata%>%filter2010,甚至安装和加载的包发生冲突,并赋予dplyr优先级,但没有任何效果。我是r的新手 Matrix_5c_AVG_Year <- cbind(AVG_SWE_YEAR,AVG_N

当我试图从我创建的数据矩阵中选择一个数据时,我收到一个错误,我希望有人能帮助我解决并修复它

UseMethodfilter\中出错:“filter\没有适用的方法” 应用于c类“矩阵”、“双精度”、“数值”的对象

我尝试通过执行dplyr:调用该函数: 或者通过使用一些管道操作mydata%>%filter2010,甚至安装和加载的包发生冲突,并赋予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年数据行的输出,并且只能选择一个标题。

正如@brettljausn所评论的,您需要将矩阵转换为data.frame。如果不添加要比较条件值的列名,则调用筛选器时也会出现错误

这应该可以说明您的问题,并在tidyverse中继续说明解决方案,因为您正在使用过滤器:

图书馆管理员 a[,1][,2] > [1,] 5 5 > [2,] 1 1 colnamesa% 过滤器耳==5 >UseMethodfilter\中出错:没有适用于“filter\”的方法应用于c类“matrix”、“double”、“numeric”的对象 a2 A可折叠:2 x 2 >年份平均值1 > > 1 5 5 > 2 1 1 a2%>% 过滤器耳==5 >一个tibble:1x2 >年份平均值1 > > 1 5 5 由v0.3.0于2019-07-31创建


由于您是新手,我建议您阅读的第1-16章。

多亏了拉索夫利森,我明白我的数据是一个矩阵,不能以那种方式进行操作,因此我必须将它们转换为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")  

最好包含数据的子集或数据的代表性样本。非常感谢您的建议,但它仍然会输出相同的错误>mydata%>%filterYear==2010 UseMethodfilter中的错误筛选器:没有适用于c类“matrix”、“double”对象的“filter”方法,“数字”有没有办法摆脱它?我猜cbindAVG_SWE_YEAR,AVG_NO[,2],AVG_FI[,2],AVG_EE[,2],AVG_LV[,2],AVG_LT[,2]返回一个矩阵,而不是一个数据帧。也许试试Matrix_5c_AVG_Year,它会给出同样的错误。但我会尝试将矩阵导出到excel,然后将其导入到新的r项目中,我希望它能解决这个问题。如果不了解有关数据和设置的更多信息,很难为您提供帮助。我已经改变了我的答案,以尽我所能,并根据@brettljausn的意见,思考我认为是您的问题和解决方案。还有-你的解决方案是什么?谢谢,你帮了我很多忙!