iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
自我挑戰組

R語言初學紀錄系列 第 25

DAY25-R語言 apply家族函數part.2

  • 分享至 

  • xImage
  •  

前言:今天會繼續介紹apply家族函數,分別為sapply函數、vapply函數、mapply函數,如果內容有哪些錯誤的地方,請多多包涵~


正文開始-->

【sapply】
簡化版的lapply,sapply增加了2個參數simplify和USE.NAMES,回傳值為向量。
語法:sapply(X, FUN, ..., simplify=TRUE, USE.NAMES = TRUE)

  • X:數列、矩陣、資料框。
  • FUN:自訂的調用函數。
  • :更多參數,可選。
  • simplify:是否數組化,當值array時,輸出結果按數列進行分組。
  • USE.NAMES:如果X為字串,TRUE設定字串為資料名,FALSE不設定。

使用範例:使用sapply函數來計算每位學生的平均成績。
https://ithelp.ithome.com.tw/upload/images/20240918/20169228Ezv71JoKGw.png

  • sapply 的結果自動簡化為向量。

【vapply】
vapply函數可以指定結果的預期類型。這在大規模資料處理時尤其重要,以避免結果類型不一致,提供了FUN.VALUE參數,用來控制回傳值的列名。
語法:vapply(X, FUN, FUN.VALUE, ..., USE.NAMES = TRUE)

  • X:數列、矩陣、資料框。
  • FUN:自訂的調用函數。
  • FUN.VALUE:定義回傳值的row.names。
  • :更多參數,可選。
  • USE.NAMES:如果X為字串,TRUE設定字串為資料名,FALSE不設定。
    使用範例:使用vapply函數計算每位學生的平均成績,並預期結果是數值型向量。
    https://ithelp.ithome.com.tw/upload/images/20240918/20169228EcVsEV4I03.png
    • numeric(1) :可告知 R 每個函數所應用的結果應為長度為 1 的數值型。

【mapply】
sapply的變形函數,類似多變數的sapply,但是參數定義有些變化。用於同時對多個列表(或向量)的元素套用函數。由於mapply是可以接收多個參數的,因此資料操作時,不需把資料先合併為data.frame。
語法:mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,USE.NAMES = TRUE)

  • FUN:自訂的調用函數。
  • :接收多個資料。
  • MoreArgs:參數列表。
  • SIMPLIFY:是否數列化,當值array時,輸出結果按數列進行分組。
  • USE.NAMES:如果X為字串,TRUE設定字串為資料名,FALSE不設定。
    使用範例:
    假設現在有兩個列表,每個學生的期中成績和期末成績,使用mapply函數計算他們的總成績。
    https://ithelp.ithome.com.tw/upload/images/20240918/20169228Q22IfJZvnY.png
    • mapply 同時對兩個列表中的每個元素(midterm_scores 和 final_scores)應用函數,將它們相加,產生每個學生的總成績。

參考:

  1. https://topic.alibabacloud.com/tc/a/apply-function-in-r-language_1_12_30736987.html
  2. https://rpubs.com/jean4723/R_note_apply_FUN

上一篇
DAY24-R語言 apply家族函數part.1
下一篇
DAY26-R語言 apply家族函數part.3
系列文
R語言初學紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言