首頁>Program>source

一个非常簡單的R指令碼在文字檔案" 0.txt"中添加了升序行索引,並在其中添加了標题" time".之後,資料被寫入檔案" 0-edit.txt"

data<-read.table("0.txt", header=TRUE,sep=",",row.names= NULL);
colnames(data)[1] = "time"
write.table(data,quote=FALSE,sep=", ","0-edit.txt");

假設我在同一个檔案夹中有4个檔案,分別稱為0.txt,1.txt,2.txt,...我如何使用計數器(或其他方式)来遍歷指令碼中的這些檔案名?

最新回復
  • 11天前
    1 #

    for(i in 0:3) {
      infile <- paste(i,".txt",sep="")
      outfile <- paste(i,"-edit.txt",sep="")
      data <- read.table(infile,header=TRUE,sep=",",row.names=NULL)
      colnames(data)[1] = "time"
      write.table(data,quote=FALSE,sep=", ",outfile)
    }
    

  • 11天前
    2 #

    這是使用lapply的無迴圈解決方案:

    infiles <- dir(pattern='\\.txt$')
    change.files <- function(file){
      data <- read.table(file, header=TRUE, sep=",", row.names=NULL)
      colnames(data)[1] = "time"
      write.table(data, quote=FALSE, sep=", ", sub("\\.txt$","-edit.txt", file))
    }
    lapply(infiles , change.files)
    

    對我来說,這種方法的真正優势在於您可以轻松地使用 mclapply並行執行它 (来自多核軟體包)而不是lapply.或 parLapply 从雪.對我来說,它看起来也更好.

  • 11天前
    3 #

    尝試一下:

    files <- list.files(path="", pattern=".txt", all.files=T, full.names=T)
    for (file in files) {
    ## do stuff
    }
    

    您可以使用正則表達式进行模式匹配,因此,如果您有很多文字檔案,但只想要帶有數字名稱的文字檔案,請使用" [0-9] .txt"或" [0-3] .txt"

  • 11天前
    4 #

    通常,您可以使用 dir() 获取给定目錄中的檔案,並使用 select 限製為.txt檔案。

    file.dir <- "/path/to/files"
    for(infile in dir(file.dir, pattern="\\.txt$")) {
      outfile <- gsub("\\.txt$","-edit\\.txt", infile)
      data <- read.table(infile,header=TRUE,sep=",",row.names=NULL)
      colnames(data)[1] = "time"
      write.table(data,quote=FALSE,sep=", ",outfile)
    }
    

  • cocoa touch:iPhone-仅在一个ViewController上允许横向定向
  • node.js:流星中服務器端路由的身份驗證