rtextreplaceinsertqdapregex

How to insert text in specific in directory in R


I am looking for an elegant way to insert character (name) into directory and create .csv file. I found one possible solution, however I am looking another without "replacing" but "inserting" text between specific charaktects.

#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)

Solution

  • I like sprintf syntax for "fill-in-the-blank" style string construction:

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

    Another option, if you can't put the %s in the directory string, is to use sub. This is replacing, but it replaces .csv with <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"