Re: [問題] 如何讀入多個CSV檔

看板R_Language作者 (小笨)時間8年前 (2016/01/15 12:10), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串6/7 (看更多)
感謝各位的幫助,我目前資料讀取沒甚麼問題了,是後面卡關了 我寫一個早上都沒辦法突破,我先把資料貼上來,因為用敘述的好像很難 https://goo.gl/DpkiII,這是我目前用的資料 要寫出一個能夠算出sulfate或nitrate的平均數的function 我目前是想說用土法煉鋼的方式將資料讀進來然後用dplyr的函數來篩選 我寫成這樣pollutanmean<-function (directory, pollutan, id=1:332 ) { csv_file<-vector("list",length(directory)) for (i in seq_along(directory)) { csv_file[[i]]<-read.csv(directory[[i]]) } s<-0 do.call(rbind,csv_file)->completedata library(dplyr) final<-completedata %>% filter(ID==id) %>% select("pollutan") s+mean(final,na.rm=TRUE)->s return(s) 我有碰到一個問題是我想用read.csv只讀我想要的CSV檔案就好了 但是list[[id]]這樣的寫法會有問題,應該是裡面只能放一個數字 假設id是1:10這樣的話就會有問題,然後我就想是不是可以用for (i in seq_along(id)) 這樣的方式去讀,可是假設使用者將id填入68:70,我發現seq_along會傳回1、2、3 這樣的數字,所以我只好把所有CSV檔案都讀進來然後用昨天學到的do.call將所有 檔案合併然後用filter篩選ID為使用者填入的id,接著選擇sulfate或nitrate 其中一個變數然後做平均接著傳回來 我得到下面的error提示 Error: All select() inputs must resolve to integer column positions. The following do not: * "pollutan" In addition: Warning message: In c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : longer object length is not a multiple of shorter object length 第一個我覺得是說要叫我指定變數的位置,但是我學到的select的直接放 我想要留下來的變數名稱就好了,第二個我就真的看不懂他在寫什麼了 想請問我中間的邏輯哪邊有錯,不好意思一直在同一個問題打轉。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.207.92 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1452831035.A.AC1.html

01/15 12:23, , 1F
我也曾經撞牆期,不恥下問很勇敢,加油
01/15 12:23, 1F
文章代碼(AID): #1Mc74xh1 (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1Mc74xh1 (R_Language)