วิธีใช้ do.call ใน r (3 ตัวอย่าง)
คุณสามารถใช้ do.call() ใน R เพื่อใช้ฟังก์ชันที่กำหนดกับรายการโดยรวมได้
ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:
do. call (function, list)
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ do.call() ในทางปฏิบัติ
ตัวอย่างที่ 1: ใช้ do.call() กับผลรวม
รหัสต่อไปนี้แสดงวิธีใช้ do.call() เพื่อคำนวณผลรวมของค่าในรายการ:
#create list values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2)) #calculate sum of values in list do. call (sum, values_list) [1] 48
ผลรวมของค่าในรายการคือ 48 .
โปรดทราบว่าเราจะได้รับข้อผิดพลาดหากเราพยายามใช้ sum() โดยตรงกับรายการ:
#create list values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2)) #attempt to sum values in list sum(values_list) Error in sum(values_list): invalid 'type' (list) of argument
ตัวอย่างที่ 2: ใช้ do.call() ด้วยค่าเฉลี่ย
รหัสต่อไปนี้แสดงวิธีใช้ do.call() เพื่อคำนวณค่าเฉลี่ยของค่าในรายการ:
#define argument to use in do.call args <- list(1:20, na. rm = TRUE ) #calculate mean of values in list do. call (mean, args) [1] 10.5
ค่าเฉลี่ยของค่าในรายการคือ 10.5 .
โปรดทราบว่าเราจะได้รับข้อผิดพลาดหากเราพยายามใช้ Mean() โดยตรงกับรายการ:
#attempt to calculate mean of values in list mean(list(1:20), na. rm = TRUE ) [1] NA Warning message: In mean.default(list(1:20), na.rm = TRUE): argument is not numeric or logical: returning NA
ตัวอย่างที่ 3: ใช้ do.call() กับ rbind
รหัสต่อไปนี้แสดงวิธีใช้ do.call() เพื่อเชื่อมต่อหลายเฟรมข้อมูลใน R:
#create three data frames df1 <- data. frame (team=c('A', 'B', 'C'), dots=c(22, 27, 38)) df2 <- data. frame (team=c('D', 'E', 'F'), dots=c(22, 14, 20)) df3 <- data. frame (team=c('G', 'H', 'I'), dots=c(11, 15, 18)) #place three data frames into list df_list <- list(df1, df2, df3) #row bind together all three data frames do. call (rbind, df_list) team points 1 to 22 2 B 27 3 C 38 4 D 22 5 E 14 6 F 20 7 G 11 8:15 a.m. 9 I 18
ผลลัพธ์ที่ได้คือเฟรมข้อมูลที่มีแถวจากแต่ละเฟรมข้อมูลทั้งสามเฟรม
โปรดทราบว่าเราจะไม่ได้รับ data frame ที่ต้องการหากเราพยายามใช้ rbind() กับรายการโดยตรง:
#create three data frames df1 <- data. frame (team=c('A', 'B', 'C'), dots=c(22, 27, 38)) df2 <- data. frame (team=c('D', 'E', 'F'), dots=c(22, 14, 20)) df3 <- data. frame (team=c('G', 'H', 'I'), dots=c(11, 15, 18)) #place three data frames into list df_list <- list(df1, df2, df3) #attmempt to row bind together all three data frames rbind(df_list) [,1] [,2] [,3] df_list List,2 List,2 List,2
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้ฟังก์ชันทั่วไปอื่นๆ ใน R:
วิธีใช้ฟังก์ชัน paste และ paste0 ใน R
วิธีใช้ฟังก์ชันแทนที่() ใน R
วิธีใช้ฟังก์ชัน View() ใน R
วิธีใช้ฟังก์ชัน rep() ใน R