Re: [問題] 一次讀入多個csv file

作者: andrew43 (討厭有好心推文後刪文者)   2014-04-18 09:55:38
※ 引述《peiwinds (Macchiato Caramel)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 語法不太熟
: [問題敘述]:
: 最近因為要處理的資料很多,想一次讀入多個csv檔 (數十個到數百個都有)
: 並且將這些檔案已 data frame的方式 rbind起來
: 下面第一個是我在 stackoverflow看人家分享拿來用的
: 第二個是我自己後來寫的
: [程式範例]:
: 1.
: temp <- do.call(rbind, lapply(list.files(path=".", pattern="*.csv"),
: read.table, header=TRUE, sep=","))
: # 方法一的問題在於他的path我無法指定我要的目錄 例如 D:/test 目錄
: # 該目錄中明明有csv檔,但是卻會出現錯誤訊息如下
: # Error in file(file, "rt") : cannot open the connection
list.files(path=".") 就是取得工作目錄的檔案名,
所以你需要切換工作目錄,或是修正 path=""。
你看看 list.files(path="D:/test") 看看就明白了。
: # 當然如果我把資料都丟在環境目錄下,當然是都讀得到也不會有問題
: # 因此我便寫了第2種
: 2.
: path <- "D:/test/"
: files <- list.files(path=path, pattern="*.csv")
: bindtemp <- data.frame()
: temp <- data.frame()
: for (file in files) {
: bindtemp <- read.csv(paste(path,file,sep=""))
: temp <- rbind(temp,bindtemp)
: }
: # 想問的是第一種的寫法為什麼不能指定目錄
: # 第二個只是丟上來跟大家分享,看有什麼什麼改進的空間XD
第二種其實沒什麼問題,功能是一樣的,只是看起來沒有比較神而已啦。
: [關鍵字]:
: 讀入多個外部檔案
作者: peiwinds (Macchiato Caramel)   2014-04-18 09:59:00
謝謝回復 可是我直接把第一個程式修改成list.files(path="D:/test") 就是會有error感覺應該是 do.call或lapply的問題?
作者: obarisk (OSWALT)   2014-04-18 11:00:00
得讓list.files列出的檔案列表有完整路徑因為list.files沒有列出完整路徑,read.csv吃到只有檔名但是檔案不在當前目錄,要吃完整路徑也許用setwd一直變換目錄可以是一種作法
作者: peiwinds (Macchiato Caramel)   2014-04-18 19:58:00
了解!!
作者: celestialgod (天)   2014-04-18 20:51:00
or paste(path, "/", list.files(...))path是你檔案的位置 list.files(path = path, ...)paste(path, "/", list.files(path = path))上面才對,最前面兩行請忽略記得加sep = "" or use paste0
作者: psinqoo (零度空間)   2014-04-29 16:43:00
getwd() <=看目前路徑

Links booklink

Contact Us: admin [ a t ] ucptt.com