提取文件名段
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")))
我正在尝试提取文件名并使用相同的名称保存数据框。 我遇到的问题是,如果由于某种原因文件名位于具有相似词的文件夹中,则 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")))