【问题标题】:Remove the last part of a string after the last "." in R删除最后一个“。”之后的字符串的最后一部分。在 R 中
【发布时间】:2015-03-31 19:16:46
【问题描述】:

假设我们有一个变量名列表,如下所示:

ls<-c("apple.mean", "orange.mean", "orange.sd", "apple.pie.mean", "orange.juice.n", "orange.juice.p%")

我们如何删除每个元素中的最后一部分(“.”之后)以便我们可以得到:

"apple" "orange" "orange" "apple.pie" "orange.juice" "orange.juice"

请注意,可能有“。”在名称中,但我不希望这些词被拆分。

我试图使用gsub("\\..*$", "",ls),但它忽略了第一个点之后的所有内容。我不确定为什么 $ 符号在这里不起作用。有什么想法吗?

> gsub("\\..*$", "",ls)
[1] "apple"  "orange" "orange" "apple"  "orange" "orange"

【问题讨论】:

    标签: regex r gsub


    【解决方案1】:

    你可以试试

    sub('[.][^.]+$', '', ls)
    #[1] "apple"        "orange"       "orange"       "apple.pie"    "orange.juice"
    #[6] "orange.juice"
    

    【讨论】:

    • 谢谢!我看到了你之前的编辑。无论哪种方式都有效!
    • @Hao 没问题。我的代码的不同之处在于它匹配 . 后跟所有非 . 直到字符串的末尾并将其替换为 ''
    • @akrun 感谢您的解释! :)
    【解决方案2】:

    鉴于这相当于删除您可以使用的文件扩展名

    library(tools)
    file_path_sans_ext(ls)
    

    【讨论】:

    • 哦,我的。对于这种情况,这实际上是一个非常聪明的举措
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2012-06-07
    • 2014-03-28
    • 1970-01-01
    • 2013-08-05
    • 2015-06-21
    • 2012-09-01
    相关资源
    最近更新 更多