以csv文件為例。
一、簡(jiǎn)單的批量讀入
批量讀入文件一般使用dir(...)
慷垮,通過(guò)dir(...)
可是獲取該路徑下所有的文件名揖闸。
如,現(xiàn)在需要批量讀入C:\Users\Administrator\Desktop\test文件夾下所有的文件料身。
path = "C:\\Users\\Administrator\\Desktop\\test"
fileName = dir(path)
for(k in 19:length(fileName)){
data = read.csv(file = paste(path,fileName[k],sep = "\\"),
header = T,stringsAsFactors = F)
}
或用apply代替for循環(huán)
path <- "C:\\Users\\Administrator\\Desktop\\test"
fileNames <- dir(path)
filePath <- sapply(fileNames, function(x){
paste(path,x,sep='\\')})
data <- lapply(filePath, function(x){
read.csv(x, header=T)})
注意汤纸,由于第二種方法使用了lapply(...)
,因此得到的數(shù)據(jù)為list形式芹血。
二贮泞、有選擇的批量讀入
利用正則表達(dá)式對(duì)讀入的文件格式進(jìn)行選擇。
如在test文件夾中有多種格式的文件幔烛,但我們只需要讀入YYYYMMDD形式的csv文件啃擦。
只需要將上面代碼中的dir(...)
中的pattern做出限制。
fileName = dir(path,pattern = '[0-9]{4}[0-9]{2}[0-9]{2}.csv')
下面是一些正則表達(dá)式的規(guī)則说贝,來(lái)源于網(wǎng)絡(luò)议惰,侵刪。
正則表達(dá)式 | 字符 | 解釋 |
---|---|---|
中間元字符 | [\b] | 回退(并刪除)一個(gè)字符(backspace) |
\f | 換頁(yè)符 | |
\n | 換行符 | |
\r | 回車符 | |
\t | 制表符(tab) | |
\v | 垂直制表符 | |
匹配數(shù)字與非數(shù)字 | \d | 任何一個(gè)數(shù)字字符乡恕,等價(jià)于[0-9] |
\D | 任何一個(gè)非數(shù)字字符言询,等價(jià)于^[0-9] | |
匹配字母\非字母與數(shù)字 | \w | 任何一個(gè)字母數(shù)字字符(大小寫均可以)或下劃線字符(等價(jià)于[a-zA-Z0-9]) |
\W | 任何一個(gè)非字母數(shù)字或下劃線字符(等價(jià)于[^a-zA-Z0-9]) | |
匹配空白字符 | \s | 任何一個(gè)空白字符(等價(jià)于[\f\n\r\t\v]) |
\S | 任何一個(gè)非空白字符(等價(jià)于[^\f\n\r\t\v]) | |
POSIX字符類 | [:alnum:] | 任何一個(gè)字母或數(shù)字(等價(jià)于[a-ZA-Z0-9]) |
[:alpha:] | 任何一個(gè)字母(等價(jià)于[a-ZA-Z]) | |
[:blank:] | 空格或制表符(等價(jià)于[\t ]) 注:t后面有一個(gè)空格 | |
[:cntrl:] | ASCII控制字符(ASCII 0到31,再加上ASCII 127) | |
[:digit:] | 任何一個(gè)數(shù)字(等價(jià)于[0-9]) | |
[:graph:] | 和[:print:]一樣傲宜,但不包括空格 | |
[:lower:] | 任何一個(gè)小寫字母(等價(jià)于[a-z]) | |
[:print:] | 任何一個(gè)可打印字符 | |
[:punct:] | 既不屬于[:alnum:]运杭,也不屬于[:cntrl:]的任何一個(gè)字符 | |
[:space:] | 任何一個(gè)空格字符,包括空格(等價(jià)于[f\n\r\t\v ] 注:v后面有一個(gè)空格 | |
[:upper:] | 任何一個(gè)大寫字母(等價(jià)于[A-Z]) | |
[:xdigit:] | 任何一個(gè)十六進(jìn)制數(shù)字(等價(jià)于[a-fA-F0-9]) | |
其他 | . | 可以匹配任何單個(gè)的字符字母數(shù)字甚至.字符本身函卒。同一個(gè)正則表達(dá)式允許使用多個(gè).字符辆憔。但不能匹配換行 |
\\ | 轉(zhuǎn)義字符,如果要匹配就要寫成“\(\)” | |
| | 表示可選項(xiàng)报嵌,即 | 前后的表達(dá)式任選一個(gè) | |
^ | 取非匹配 | |
$ | 放在句尾虱咧,表示一行字符串的結(jié)束 | |
() | 提取匹配的字符串,(\s*)表示連續(xù)空格的字符串 | |
[] | 選擇方括號(hào)中的任意一個(gè)(如[0-2]和[012]完全等價(jià)锚国,[Rr]負(fù)責(zé)匹配字母R和r) | |
{} | 前面的字符或表達(dá)式的重復(fù)次數(shù)腕巡。如{5,12}表示重復(fù)的次數(shù)不能小于5,不能多于12血筑,否則都不匹配 | |
* | 匹配零個(gè)或任意多個(gè)字符或字符集合绘沉,也可以沒(méi)有匹配 | |
+ | 匹配一個(gè)或多個(gè)字符,至少匹配一次 | |
? | 匹配零個(gè)或一個(gè)字符 |