如何在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。
我正在寻找一种优雅的方式来将字符(名称)插入目录并创建 .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。