如何使用R批量處理檔案

2021-08-29 20:16:09 字數 2474 閱讀 5518

這類函式很多,下面列出的是基本安裝包(base)中的一些:

ls("package:base", pattern="^file\\.")
## [5] "file.create" "file.exists" "file.info" "file.link"

## [9] "file.mode" "file.mtime" "file.path" "file.remove"

## [13] "file.rename" "file.show" "file.size" "file.symlink"

常用的有:

但最常用的乙個函式可能是list.files,此函式的作用是列出指定目錄(路徑)中的檔案:

str(list.files)
## function (path = ".", pattern = null, all.files = false, full.names = false, 

## recursive = false, ignore.case = false, include.dirs = false,

## no.. = false)

這裡僅介紹兩個:gsub和strsplit。

我們將用gsub這個函式從檔名中提取需要的資訊。它的用法是:

str(gsub)
## function (pattern, replacement, x, ignore.case = false, perl = false, 

## fixed = false, usebytes = false)

strsplit的作用是使用指定分隔符切割字串:

str(strsplit)
## function (x, split, fixed = false, perl = false, usebytes = false)
xnames <- c("t-1-a", "t-2-b")

strsplit(xnames, "-")

## [[1]]

## [1] "t" "1" "a"

## ## [[2]]

## [1] "t" "2" "b"

##      [,1] [,2]

## [1,] "t" "t"

## [2,] "1" "2"

## [3,] "a" "b"

可以使用strsplit函式。例如獲取副檔名:

ffs <- list.files(pattern = "\\.")
當然也可以使用gsub函式:

gsub("^.+\\.([^\\.]+$)", "\\1", ffs)
想要從檔名中提取出有用資訊,首先檔名中得存在有用資訊,而這得取決於你的檔案命名習慣。如果你是做科學的人,建議檔名中包含樣品、重複、時間等資訊。使用一定的規則命名檔案,這在後期資料處理中非常有用。

基本過程是:

下面**把當前目錄下的temp子目錄下的txt檔案用編號進行重新命名:

ffo <- list.files(path="temp", pattern = "\\.txt", full.names = true)

if ( length(ffo) > 0)

下面的**把當前目錄下的檔名的副檔名轉成大寫:

ffo <- list.files(pattern = "\\..+$")

fs1 <- gsub("^(.+\\.)([^\\.]+$)", "\\1", ffo)

fs2 <- gsub("^(.+\\.)([^\\.]+$)", "\\2", ffo)

ffn <- paste0(fs1, toupper(fs2))

file.rename(ffo, ffn)

可根據檔案資訊選擇檔案,然後再刪除。這時候file.info函式就很有用了:

xsel <- file.info(ffs)$size < 10

if (sum(xsel) > 0) file.remove(ffs[xsel])

通常使用for迴圈進行讀取,例如:

dtx <- null

for (ff in ffs) dtx <- cbind(dtx, read.csv(ff))

colnames(dtx) <- ffs

但這同樣取決於你的檔案和資料。檔名的命名要講究規律,儲存格式也要標準化!如果做不到這一點,請不要說你在做科學。

created: 2018-10-24 三 10:29

批量讀取 R 批量讀取檔案

檔案讀取 1 同一目錄下,多個同一型別,檔名連續的檔案資料讀取 設定工作目錄 setwd d r project 設定乙個空白的資料框 data 我的檔案是 001.csv 002.csv 003.csv 思維方式是用乙個id的向量,從1數到100,然後和 csv 拼接起來,組成檔名,函式可以用pa...

用R語言批量處理檔案資料夾和檔案

有時候,我們需要從一系列資料夾裡提取一系列檔案,比如pdf檔案。再者,我們可能還需要對這些檔案做一些處理,比如合併。那麼就可以利用r語言來處理。一般來說,perl語言更適用於檔案或文字的處理。不過,因perl語言很久沒用,生疏了。r語言自帶的一系列函式處理如下 file.remove 用於檔案刪除 ...

使用Matlab批量的處理檔案(檔案的檔名類似)

matlab是處理資料的乙個強有力的工具。讀取大量的檔案,一次只處理乙個資料,是乙個浪費精力的工作,可以使用一種方法批量的處理檔名相似的檔案,將會節省大量的時間,去幹更多有意義的事情,要學會偷懶。clc clear close all fori 1 10 代表檔案的格式 filename strca...