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

看板R_Language作者 (討厭有好心推文後刪文者)時間10年前 (2014/04/18 09:55), 編輯推噓2(2012)
留言14則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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 第二種其實沒什麼問題,功能是一樣的,只是看起來沒有比較神而已啦。 : [關鍵字]: : 讀入多個外部檔案 -- http://apansharing.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.37.172 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1397786141.A.213.html

04/18 09:59, , 1F
謝謝回復 可是我直接把第一個程式修改成
04/18 09:59, 1F

04/18 10:00, , 2F
list.files(path="D:/test") 就是會有error
04/18 10:00, 2F

04/18 10:01, , 3F
感覺應該是 do.call或lapply的問題?
04/18 10:01, 3F

04/18 11:00, , 4F
得讓list.files列出的檔案列表有完整路徑
04/18 11:00, 4F

04/18 11:01, , 5F
因為list.files沒有列出完整路徑,read.csv吃到只有檔名
04/18 11:01, 5F

04/18 11:02, , 6F
但是檔案不在當前目錄,要吃完整路徑
04/18 11:02, 6F

04/18 11:02, , 7F
也許用setwd一直變換目錄可以是一種作法
04/18 11:02, 7F

04/18 19:58, , 8F
了解!!
04/18 19:58, 8F

04/18 20:51, , 9F
or paste(path, "/", list.files(...))
04/18 20:51, 9F

04/18 20:52, , 10F
path是你檔案的位置 list.files(path = path, ...)
04/18 20:52, 10F

04/18 20:52, , 11F
paste(path, "/", list.files(path = path))
04/18 20:52, 11F

04/18 20:52, , 12F
上面才對,最前面兩行請忽略
04/18 20:52, 12F

04/18 21:56, , 13F
記得加sep = "" or use paste0
04/18 21:56, 13F

04/29 16:43, , 14F
getwd() <=看目前路徑
04/29 16:43, 14F
文章代碼(AID): #1JK8OT8J (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1JK8OT8J (R_Language)