0

我正在寻找一种将字符(名称)插入目录并创建 .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

4 回答 4

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"
于 2018-08-02T18:44:04.913 回答
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”

于 2018-08-02T18:44:55.210 回答
1

我发现这paste0()是要走的路,只要你分开存储你的目录和扩展:

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

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

对于不熟悉的人,paste0()paste( , sep="").

于 2018-08-02T19:24:36.853 回答
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))
     }
)

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

于 2018-08-02T19:21:27.953 回答