2017-10-11 92 views
0

我有一個帶有大量工作表的Excel文件,我需要一個代碼來將每張工作表導入到一個單獨的數據框中,該數據框將按照與Excel中工作表名稱相同的約定命名。將多個表導入R中的多個數據框

例如,標籤A,B,C將分別作爲數據框A,B和C導入。

從其他線程,我見過這樣的代碼: length(excel_sheets(filename))獲取文件中的張數

然後創建一個將包含每個選項卡的列表:

read_excel_allsheets <- function(filename) { 
    sheets <- readxl::excel_sheets(filename) 
    x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) 
    names(x) <- sheets 
    x 
} 

但我不知道如何從那裏將製表符導入到R中。

將不勝感激的幫助。 在此先感謝!

回答

2

下面是做這件事:

# write test data 
tf <- writexl::write_xlsx(
    list("the mtcars" = mtcars, "iris data" = iris), 
    tempfile(fileext = ".xlsx") 
) 

# read excel sheets 
sheets <- readxl::excel_sheets(tf) 
lst <- lapply(sheets, function(sheet) 
    readxl::read_excel(tf, sheet = sheet) 
) 
names(lst) <- sheets 

# shove them into global environment 
list2env(lst, envir = .GlobalEnv) 
0

你的功能在所有選項卡中讀取並保存爲(因爲lapply())一個列表的元素。你可以取出列表中的元素與list2env

your_excel_list <- read_excel_allsheets("test.xlsx") 
list2env(your_excel_list, .GlobalEnv) 

你會看到你的列表的命名元素現在的數據幀(或實際tbl_df)在全球環境

相關問題