首页 > 解决方案 > 如果列包含字符串,R过滤数据框

问题描述

注意事项:我对 R 的了解至少是广博的。

我需要过滤一个数据框,只保留那些包含某个字符串的行。

到目前为止我已经尝试过:

            DFfilters <- DFfilters  [which  (
                                                    grepl(DFfilters$EMPRESA             ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$PAIS                ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$NOMBREOT            ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$TIPOOBRA            ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$NOMBRECLI           ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$Anno_Exp            ,input$ExperienciasSearchHidden)
                                                |   grepl(DFfilters$pres_descrip_larga  ,input$ExperienciasSearchHidden)
                                            )
                                    ,]

输出:

空数据框,甚至丢弃我知道在 Anno_Exp 中包含 2008 的行。

此外,我收到此警告:

Warning in grepl(DFfilters$EMPRESA, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$PAIS, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$NOMBREOT, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$TIPOOBRA, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$NOMBRECLI, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$Anno_Exp, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used
Warning in grepl(DFfilters$pres_descrip_larga, input$ExperienciasSearchHidden) :
  argument 'pattern' has length > 1 and only the first element will be used

任何帮助将非常感激!

标签: rdataframefilter

解决方案


您在 grepl() 中交换了顺序,将输入放在首位:

grepl(input$ExperienciasSearchHidden,   DFfilters$EMPRESA),
# etc..

否则看起来没问题。真的不需要which里面。


推荐阅读