自动捕获文件名并将其用于R中的输出文件
最近,我需要编写可复制的R代码来读取一批.csv文件,然后以相同的名称输出每个文件。比如说,自动捕获文件名并将其用于R中的输出文件,r,R,最近,我需要编写可复制的R代码来读取一批.csv文件,然后以相同的名称输出每个文件。比如说, filenames <- list.files(path="G:\\test") filenames [1] "mydata1.csv" "mydata2.csv" "mydata3.csv"........."mydata100.csv" length(filenames) 100 因此,对于同一文件夹下的100.csv文件,如何编写可复制的代码来自动捕获每个文件名,然
filenames <- list.files(path="G:\\test")
filenames
[1] "mydata1.csv" "mydata2.csv" "mydata3.csv"........."mydata100.csv"
length(filenames)
100
因此,对于同一文件夹下的100.csv文件,如何编写可复制的代码来自动捕获每个文件名,然后将捕获的名称放入
sink()
,以输出具有相同名称的txt文件?这相当简单。正如Alex A.提到的,您可以使用grep(或者在本例中为sub)获取文件名的前缀,并在新文件名中使用该前缀
我已经做了一个简单的工作示例。有两个结构如下的csv文件。这些被读入,然后在循环中打印到接收器输出。为了简单起见,我省略了您的代码,但假设这样做有效,那么替换代码应该很简单
file1.csv:
structure(list(file = c(1L, 1L), value = 1:2), .Names = c("file",
"value"), class = "data.frame", row.names = c(NA, -2L))
file2.csv:
structure(list(file = c(2L, 2L), value = 3:4), .Names = c("file",
"value"), class = "data.frame", row.names = c(NA, -2L))
R脚本:
setwd("path\\to\\files")
files <- list.files(pattern = "*.csv$")
files
for(i in 1:length(files)){
test.data <- read.csv(file = files[i], header = TRUE, stringsAsFactors = FALSE)
filenm <- sub("csv", "txt", files[i]) # get rid of csv suffix and replace with txt
print(filenm) #check, to make sure the above is working
sink(file = filenm, type = "output")
# your code here
print(head(test.data))
sink()
}
setwd(“路径\\到\\文件”)
文件使用gsub(“.csv”,文件名)
获取裸文件名。然后,当您使用sink()
编写时,请使用paste0(,“.txt”)
作为新文件名。在无意中覆盖输入文件或更改文件名之前,您可能希望将目录更改为新目录(例如输出目录)。您可以使用setwd(“新目录”)
更改R
中的目录,在第一个接收语句之前使用它谢谢大家~!你的建议帮我弄明白~!!谢谢!
setwd("path\\to\\files")
files <- list.files(pattern = "*.csv$")
files
for(i in 1:length(files)){
test.data <- read.csv(file = files[i], header = TRUE, stringsAsFactors = FALSE)
filenm <- sub("csv", "txt", files[i]) # get rid of csv suffix and replace with txt
print(filenm) #check, to make sure the above is working
sink(file = filenm, type = "output")
# your code here
print(head(test.data))
sink()
}