2016-11-16 35 views
-1

我怎樣才能正確地構建一個lapply(從出一個目錄的)所有該.csv文件中讀取信息,加載所有列作爲字符串,然後將它們結合成一個數據幀。導入帶有可變柱類型的多個文件的.csv成R

this,我有辦法讓所有加載並裝訂成數據幀該.csv文件。不幸的是,他們陷入了柱子如何變形的可變性上。因此,給我這個錯誤:

Error: Can not automatically convert from character to integer in column

我試圖用補充的arguments for data type的代碼,我試圖只保留一切爲字符;我現在被困在能夠正確地獲取我的樂曲「循環」以有效地引用其「循環」的每個循環的主題。

srvy1 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
      AFF_ID_INV_RESP = 5L), .Names = c("RESPONSE_ID", "QUESTION_ID", 
              "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                -1L)) 

srvy2 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
      AFF_ID_INV_RESP = "bovine"), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                 -1L))  

files = list.files(pattern="*.csv") 
tbl = lapply(files, read_csv(files, col_types = cols(.default = col_character()))) %>% bind_rows 

是否有一個簡單的辦法解決這一點,我可以保持在tidyverse,或者我必須下拉的水平,並進入公開建設for循環自己 - 每this

+0

downvote是爲了什麼? –

+1

很可能是由於沒有提供可重現的示例和數據。你的代碼中有一些錯誤。它應該是'lapply(外商投資企業,read_csv,col_types = COLS(.DEFAULT = col_character()))' –

+1

我將提供'頭(X,5)'的兩個文件,從那些和'dput'創建一個列表結果並粘貼在這裏。 –

回答

6

lapply應該是lapply(x, FUN, ...)的形式,其中...是傳遞給FUN的參數。你正在填充FUN中的參數。它應該是lapply(files, read_csv, col_types = cols(.default = "c"))

如果你喜歡一個tidyverse解決方案:

files %>% 
    map_df(~read_csv(.x, col_types = cols(.default = "c"))) 

這將整件事裝訂成末的數據幀。