提取文件名段

Extract segment of filename

我正在尝试提取文件名并使用相同的名称保存数据框。 我遇到的问题是,如果由于某种原因文件名位于具有相似词的文件夹中,则 stringr 也会 return 该词。

filename <- "~folder/testdata/2016/testdata 2016.csv"

如果我运行这个:

library(stringr) str <- str_trim(stringr::str_extract(filename,"[t](.*)"), "left") 它 returns testdata/2016/testdata 2016.csv 当我想要的只是 testdata 2016。最理想的情况是 testdata2016.

我一直在尝试多种组合,但必须有一种更简单的方法来做到这一点。如果有一种从右到左读取路径的方法,从 .csv 开始到 / 停止,我就不会有这个问题了。

你可以有以下方法:

library(stringr)
str_replace(str_extract(filename,"\w*\s+\w*(?=\.)"),"\s+","")

str_replace_all(basename(filename),"\s+|\.csv","")

您可以使用本杰明建议的 basename 方法。

?basename:

basename removes all of the path up to and including the last path separator (if any).

输出:

[1] "testdata2016"

基础 R 中的大量帮助(tools pkg 随默认 R 安装一起提供):

gsub(" ", "",
  tools::file_path_sans_ext(
    basename("~folder/testdata/2016/testdata 2016.csv")))