【问题标题】:Subset character vector in R [duplicate]R中的子集字符向量[重复]
【发布时间】:2020-10-17 21:21:36
【问题描述】:

我知道这是一个超级简单的问题,但我真的不知道 R 中最好(最常见)的方法是什么。 我有一个字符向量:

> dataframes
[1] "saga/dataframes/isce.log"                          "saga/dataframes/no_filter.csv"                    
[3] "saga/dataframes/sig0.9_iter100_viter50_nb_cv0.csv" "saga/dataframes/sig0.9_iter20_viter50_nb_cv0.csv" 

我想要的是元素中没有isce.log 的条目。所以实际上是第2到第4。 R 中有很多选项可以使用字符向量,我非常困惑。 这是subset 的情况还是dplyrfilterstr_subset...?

【问题讨论】:

    标签: r string subset


    【解决方案1】:

    使用grepl:

    dataframes[!grepl("isce.log", dataframes, fixed=TRUE)]
    
    [1] "saga/dataframes/no_filter.csv"
    [2] "saga/dataframes/sig0.9_iter100_viter50_nb_cv0.csv"
    [3] "saga/dataframes/sig0.9_iter20_viter50_nb_cv0.csv"
    

    数据:

    dataframes <- c("saga/dataframes/isce.log",
                    "saga/dataframes/no_filter.csv",  
                    "saga/dataframes/sig0.9_iter100_viter50_nb_cv0.csv",
                    "saga/dataframes/sig0.9_iter20_viter50_nb_cv0.csv")
    

    【讨论】:

    • 非常感谢:) 真的需要了解更多关于使用 grep...
    【解决方案2】:

    或者你可以试试:

    grep("isce.log",dataframes,value=TRUE,invert=TRUE)
    

    value=TRUE 选项从你的向量中返回匹配的值,然后你使用invert=TRUE 来翻转..

    【讨论】:

    • 太好了,非常感谢! Grep 确实似乎是最好的工具。但是我为什么要反转它呢?
    • 您想要没有 "isce.log" 的值?所以它必须是相反的。如果你尝试grep("isce.log",dataframes,value=TRUE),你会得到具有模式的值
    • 当然....抱歉,咖啡还不够
    【解决方案3】:

    使用str_subset

    stringr::str_subset(dataframes, "isce.log", negate = TRUE)
    
    #[1] "saga/dataframes/no_filter.csv" 
    #[2] "saga/dataframes/sig0.9_iter100_viter50_nb_cv0.csv"
    #[3] "saga/dataframes/sig0.9_iter20_viter50_nb_cv0.csv" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多