簡體   English   中英

如何修復UseMethod(“ filter_”)中的dplyr filter()錯誤

[英]How to fix dplyr filter() Error in UseMethod(“filter_”)

當我嘗試從創建的數據矩陣中選擇數據時,出現錯誤,我希望有人可以幫助我並修復它。

UseMethod(“ filter_”)中的錯誤:沒有將適用於'filter_'的適用方法應用於類“ c('matrix','double','numeric')”的對象

我試圖通過執行dplyr ::來調用該函數,或者使用一些管道操作mydata%>%filter(2010)甚至安裝和加載了軟件包“ conflicted”,並給dplyr一個優先級,但沒有任何效果。 我是新來的。

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。 如果不添加要在其上比較條件值的列名,則在filter調用中也會出錯。

這應該可以說明您的問題和解決方案(繼續在tidyverse中,因為您正在使用filter ):

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軟件包 (v0.3.0)創建於2019-07-31

由於您是新手,因此建議您閱讀https://r4ds.had.co.nz/的第1-16章。

多虧了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")  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM