我正在尝试提取文件名并使用相同名称保存数据框。 我遇到的问题是,如果由于某种原因文件名在具有相似单词的文件夹内,则stringr也将返回该单词。
filename <- "~folder/testdata/2016/testdata 2016.csv"
如果我这样做:
library(stringr)
str <- str_trim(stringr::str_extract(filename,"[t](.*)"), "left")
当我想要的只是testdata/2016/testdata 2016.csv
时,它会返回testdata 2016
。最好是获得testdata2016
更好。
我一直在尝试几种组合,但必须有一种更简单的方法。如果有一种方法从右到左阅读路径,从.csv
/
处开始,我就不会有这个问题了。
答案 0 :(得分:2)
您可以采用以下方法:
library(stringr)
str_replace(str_extract(filename,"\\w*\\s+\\w*(?=\\.)"),"\\s+","")
str_replace_all(basename(filename),"\\s+|\\.csv","")
您可以按照本杰明的建议使用basename
方法。
?basename:
basename删除所有路径,包括最后一个路径 分隔符(如果有的话)。
<强>输出:强>
[1] "testdata2016"
答案 1 :(得分:2)
基础R中有很多帮助(tools
pkg附带默认的R安装):
gsub(" ", "",
tools::file_path_sans_ext(
basename("~folder/testdata/2016/testdata 2016.csv")))