自动捕获文件名并将其用于R中的输出文件

自动捕获文件名并将其用于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文件,如何编写可复制的代码来自动捕获每个文件名,然

最近,我需要编写可复制的R代码来读取一批.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()
}