如何在R中的特定目录中插入文本

How to insert text in specific in directory in R

我正在寻找一种优雅的方式来将字符(名称)插入目录并创建 .csv 文件。我找到了一个可能的解决方案,但是我正在寻找另一个没有 "replacing" 但 "inserting" 特定字符之间的文本。

#lets start
    df <-data.frame()
    name <- c("John Johnson")
    dir <- c("C:/Users/uzytkownik/Desktop/.csv")
#how to insert "name" vector between "Desktop/" and "." to get:
    dir <- c("C:/Users/uzytkownik/Desktop/John Johnson.csv")
    write.csv(df, file=dir)
#???

#I found the answer but it is not very elegant in my opinion
    library(qdapRegex)
    dir2 <- c("C:/Users/uzytkownik/Desktop/ab.csv")
    dir2<-rm_between(dir2,'a','b', replacement = name)
> dir2
[1] "C:/Users/uzytkownik/Desktop/John Johnson.csv"
    write.csv(df, file=dir2)

我喜欢 sprintf "fill-in-the-blank" 样式字符串构造的语法:

name <- c("John Johnson")
sprintf("C:/Users/uzytkownik/Desktop/%s.csv", name)
# [1] "C:/Users/uzytkownik/Desktop/John Johnson.csv"

如果不能将 %s 放在目录字符串中,另一种选择是使用 sub。这是替换,但是它将 .csv 替换为 <name>.csv.

dir <- c("C:/Users/uzytkownik/Desktop/.csv")
sub(".csv", paste0(name, ".csv"), dir, fixed = TRUE)
# [1] "C:/Users/uzytkownik/Desktop/John Johnson.csv"

这应该可以满足您的需求。

dir <- "C:/Users/uzytkownik/Desktop/.csv"
name <- "joe depp"

dirsplit <- strsplit(dir,"\/\.")
paste0(dirsplit[[1]][1],"/",name,".",dirsplit[[1]][2])

[1] "C:/Users/uzytkownik/Desktop/joe depp.csv"

假设您有一个列表,其中包含要保存的某些数据结构的所需名称,例如:

names = [“file_1”, “file_2”, “file_3”]

现在,您想更新要保存文件的路径,添加名称和扩展名,

path = “/Users/Documents/Test_Folder/”
extension = “.csv”

实现它的一个简单方法是使用 paste() 创建完整路径作为 lapply 中 write.csv() 的输入,如下所示:

lapply(names, function(x) {
    write.csv(x = data, 
              file = paste(path, x, extension))
     }
)

这种方法的好处是您可以迭代包含文件名的列表,最终路径将自动更新。一种可能的扩展是定义一个带有扩展名的列表并相应地更新路径。

我发现 paste0() 是可行的方法,只要您分别存储目录和扩展名即可:

path <- "some/path/"
file <- "file"
ext  <- ".csv"

write.csv(myobj, file = paste0(path, file, ext))

对于那些不熟悉的人,paste0() 对于 paste( , sep="") 来说是 shorthand。