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

时间:2018-08-02 18:27:58

标签: r text replace insert qdapregex

我正在寻找一种将字符(名称)插入目录并创建.csv文件的优雅方法。我找到了一种可能的解决方案,但是我正在寻找另一种解决方案,而没有在特定特征之间“替换”而是“插入”文本。

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

4 个答案:

答案 0 :(得分:2)

我喜欢sprintf语法来构造“空白”样式字符串:

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"

答案 1 :(得分:1)

这应该可以为您提供所需的东西。

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”

答案 2 :(得分:1)

我发现paste0()是最好的选择,只要您分别存储目录和扩展名即可:

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

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

对于那些不熟悉的人,paste0()paste( , sep="")的简写。

答案 3 :(得分:0)

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

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

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