我正在寻找一种将字符(名称)插入目录并创建.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)
答案 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))
}
)
此方法的好处是,您可以在包含文件名的列表上进行迭代,并且最终路径将自动更新。一种可能的扩展名是定义一个带有扩展名的列表,并相应地更新路径。