检索R中加载的数据对象的原始文件名
我试图检索存储在R中的对象的原始文件名。原因是,在对数据对象进行修改后,我希望使用文件名中的相同前缀保存新对象。我的意思是:检索R中加载的数据对象的原始文件名,r,object,naming,R,Object,Naming,我试图检索存储在R中的对象的原始文件名。原因是,在对数据对象进行修改后,我希望使用文件名中的相同前缀保存新对象。我的意思是: dat <- read.csv("../DATA/Cats.2017.csv") 我试图避免每次加载另一个csv文件时手动更改文件名。我希望这是有道理的,有一个简单的解决办法 最简单的方法可能是: orig_name您可以尝试以下方法: file_path <- "path/to/my/file/tmm/1.file.csv" file_name <-
dat <- read.csv("../DATA/Cats.2017.csv")
我试图避免每次加载另一个csv文件时手动更改文件名。我希望这是有道理的,有一个简单的解决办法 最简单的方法可能是:
orig_name您可以尝试以下方法:
file_path <- "path/to/my/file/tmm/1.file.csv"
file_name <- basename(file_path)
sp <- unlist(strsplit(file_name, '\\.'))
file_prefix <- paste0(sp[-length(sp)], collapse = '.')
new_file_name <- paste0(file_prefix, ".NEW.csv")
file\u path执行此操作的最快方法可能是使用gsub()
使用strsplit
将我更新的解决方案添加到基准测试中。效果很好。如果你能接受所有答案,我会接受。效果很好,只是在新名称的末尾留下了一个额外的“.”,结果是“Cats.2017..new.csv”
file_path <- "path/to/my/file/tmm/1.file.csv"
file_name <- basename(file_path)
sp <- unlist(strsplit(file_name, '\\.'))
file_prefix <- paste0(sp[-length(sp)], collapse = '.')
new_file_name <- paste0(file_prefix, ".NEW.csv")
fileName <- '../DATA/Cats.2017.csv'
dat <- read.csv(fileName)
write.csv(dat, paste0(gsub('.csv', '.NEW.csv', fileName)))
fileName <- "../DATA/Cats.2017.csv"
rbenchmark::benchmark(
'str_sub' = {
newName <- paste0(stringr::str_sub(fileName, 1, -4), "NEW.csv")
},
'stringi' = {
newName <- paste0(paste(unlist(stringi::stri_split_fixed(basename(fileName), ".", n = 3))[-3], collapse = "."), ".NEW.csv")
},
'gsub' = {
newName <- paste0(gsub('.csv', '.NEW.csv', fileName))
},
replications = 100000
)
test replications elapsed relative user.self sys.self user.child sys.child
3 gsub 100000 0.81 1.000 0.82 0 NA NA
1 str_sub 100000 1.10 1.358 1.10 0 NA NA
2 stringi 100000 1.67 2.062 1.67 0 NA NA