在 R 中删除字符串中最后一个 "." 后面的部分

5
假设我们有以下变量名的列表:
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"
2个回答

7
你可以尝试。
sub('[.][^.]+$', '', ls)
#[1] "apple"        "orange"       "orange"       "apple.pie"    "orange.juice"
#[6] "orange.juice"

谢谢!我看到了你之前的编辑。两种方式都可以! - Hao
1
@Hao 没问题。我的代码的区别在于它匹配了 . 后面的所有非 . 直到字符串结尾,并将其替换为 '' - akrun
@ akrun 谢谢您的解释! :) - Hao

2
考虑到这相当于删除文件扩展名,您可以使用
library(tools)
file_path_sans_ext(ls)

哦,我的。对于这种情况来说,这实际上是一个非常聪明的举动。 - Hao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接