簡體   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