繁体   English   中英

运行循环以在 Rstudio 中编辑多个 txt 文件

[英]Running a loop for editing multiple txt files in Rstudio

我想在 RStudio 中打开多个 .txt 文件,并创建了一个循环来使用for函数打开这些文件。 我只想删除每个文档中的第一行,然后以相同的名称再次保存 .txt 文件。 我已经能够使用这个脚本一次打开一个 .txt 文件:

setwd("Document directory")
Test_data<-read.delim("File Name.txt")
colnames(Test_data)<-NULL
Test_data<-Test_data[-c(1),]
write.table(Test_data, file = "File Name 1.txt", sep = "\t",row.names = FALSE, col.names = FALSE)

而且我已经能够用这个脚本创建循环:

    library(tidyverse)
library(fs)
setwd("Document directory")
file_paths <-fs::dir_ls("Document directory")
file_paths

file_contents<- list()
#This creates a loop
for(i in seq_along(file_paths)){
  file_contents[[i]]<-read.delim(
    file = file_paths[[i]]
  )
}
View(file_contents)

但我不确定如何将它们放在一起以创建一个循环来编辑我正在工作的文件夹中的每个文档。

请问有人愿意帮忙吗?

假设您要编辑“文档目录”中的每个csv文件,删除第一行列名。

library(tidyverse)
library(fs)
setwd("Document Directory")

files <- fs::dir_ls(type = "file", regex = "[.]csv$")

#This creates a loop
for(i in seq_along(files)) {
  tmp_content <- read.delim(files[i])[-c(1),]
  write.table(tmp_content, file = paste0("new_", files[i]), sep = "\t",row.names = FALSE, col.names = FALSE)
}
  • dir_ls过滤文件的参数,尤其是.csv文件。 您可以更改此行为,例如每个.txt文件的regex = "[.]txt$"过滤器。 如果您不知道按结尾过滤任何文件,只需从函数dir_ls()删除regex = ...部分。
  • 接下来我们遍历这些文件,读取它们并删除第一行。
  • 最后我们将它们写回到文件中。 我使用file = paste0("new_", files[i])以“new_”作为新文件的前缀。 由于col.names = FALSE是参数之一,因此您不需要colnames(tmp_content) <- NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM