乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      總結(jié) | R語言批量讀取寫入Excel數(shù)據(jù)

       育種數(shù)據(jù)分析 2021-11-18

      前一段,寫過一篇:R語言中寫入Excel的不同sheet表格,最近學(xué)習(xí)了tidyverse的方法,感覺需要總結(jié)一下,更新一下知識結(jié)構(gòu)。

      本文準(zhǔn)備用實際數(shù)據(jù),做一下操作:

      「批量讀?。骸?/strong>

      • 批量讀取多個Excel數(shù)據(jù)
      • 批量讀取一個Excel數(shù)據(jù)的不同表格

      「批量寫入」

      • 批量寫入Excel數(shù)據(jù)
        • 1,批量寫入到不同的Excel中
        • 2,批量寫入到一個Excel的不同表格中

      1. 模擬數(shù)據(jù)

      模擬數(shù)據(jù)的過程很簡單,新建一個Excel,里面加點內(nèi)容,然后復(fù)制粘貼,重命名。

      ?

      懂了這么多編程知識,這一步顯得不夠高科技,但是確實是很直接。

      ?

      2. 批量讀取

      2.1 批量讀取多個Excel數(shù)據(jù)

      「步驟:」

      • 先把目錄下的Excel名稱列出來
      • 批量讀取
      • 后續(xù)操作
      library(tidyverse)
      library(openxlsx)

      list_name = dir("./",pattern = ".xlsx")
      list_name

      re = map(list_name, ~ read.xlsx(.,sheet=1))
      re
      names(re) = list_name
      re
      write.xlsx(re,"../re_hebing.xlsx")

      目錄:讀取結(jié)果:結(jié)果文件:

      在這里插入圖片描述

      2.2 批量讀取一個Excel的不同sheet表格

      「步驟:」

      • 共有8個sheet
      • 批量讀取
      • 后續(xù)操作
      name_sheet = 1:8
      re2 = map(name_sheet, ~ read.xlsx("../re_hebing.xlsx",sheet=.))
      re2

      3. 批量寫入

      3.1 批量寫入到不同的Excel中

      「步驟:」

      • 內(nèi)容為list,每個元素為一個data.frame

      這里,我們用re的結(jié)果:

      > str(re)
      List of 8
      $ a1.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a2.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a3.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a4.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a5.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a6.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a7.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
      $ a8.xlsx:'data.frame':4 obs. of 2 variables:
      ..$ ID: num [1:4] 1 2 3 4
      ..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681

      這里,我們將工作目錄設(shè)置為上一級,用map2進行操作:

      setwd("../")
      sheet_name = names(re)
      sheet_name
      map2(re,sheet_name,write.xlsx)

      結(jié)果:

      3.2 批量寫入到同一個Excel中不同sheet表格

      這就不用操作,直接寫入就行了,一行代碼:

      write.xlsx(re,"new_new_many_sheets.xlsx")

      4. 知識點總結(jié)

      • 使用了map和匿名函數(shù)進行批量操作
      • 寫入多個Excel時,用了map2函數(shù),其實還可以用walk2函數(shù),walk2就不會返回結(jié)果到終端了
      • 默認(rèn)的write.xlsx函數(shù),支持寫入list就是多個sheet表格
      • 有時候重命名list更有用,比如寫入到不同sheet表格中,名稱就是不同sheet表的名稱
      • 讀取不同sheet表格時,可以用1,2,3表示對應(yīng)的sheet
      • 另外,如果想把批量讀取的Excel進行行合并或者列合并,可以用map_dfc或者map_dfr更簡單。當(dāng)然,后面也可以用map再做處理
      • 總之,map函數(shù)就是批量操作的,越用越6

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多