這類函式很多,下面列出的是基本安裝包(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...