【问题标题】:Return identified parts of strings with grepl rather than full string使用 grepl 而不是完整字符串返回字符串的已识别部分
【发布时间】:2018-10-29 23:56:00
【问题描述】:

我有一列包含大约 300 个以(不同)文件扩展名结尾的字符串。

例如

   id   colname1
   1    file1.mov
   2    name.jpeg
   3    bla.long_extension

我想创建一个只返回扩展名的新字符串。 所以从点剩下的所有东西都应该被删除

id    new_col
 1     .mov
 2     .jpeg
 3     .long_extension

使用 grep(".*", df$colname1, value=TRUE) 我可以确定哪些行适合该模式(以 ". 结尾和未指定数量的后续字符),但我如何指定我只想要返回的最后一个字符而不是行号或整个字符串? 点的左边和右边的字符数都不是固定的。

【问题讨论】:

    标签: r string grepl


    【解决方案1】:

    我们可以用sub去掉前缀

    df$new_col <- sub(".*\\.", ".", df$colname1)
    df$new_col
    #[1] ".mov"            ".jpeg"           ".long_extension"
    

    【讨论】:

    • 谢谢你,这很好用。你能给我解释一下“。* \\。”图案?基本上,我知道它的意思是“一切尽在掌握”。但是为什么第一个点和两个\\?当 * 表示“前一项将被匹配零次或多次。”?
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2018-11-29
    • 2017-09-02
    • 1970-01-01
    • 2018-02-28
    • 2021-11-08
    相关资源
    最近更新 更多