Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检索R中加载的数据对象的原始文件名_R_Object_Naming - Fatal编程技术网

检索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 <-

我试图检索存储在R中的对象的原始文件名。原因是,在对数据对象进行修改后,我希望使用文件名中的相同前缀保存新对象。我的意思是:

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