วิธีการใช้งานฟังก์ชัน with() และ inside() ใน r


ฟังก์ชัน with() และ inside() ใน R สามารถใช้เพื่อประเมินนิพจน์ตามกรอบข้อมูล

ฟังก์ชันเหล่านี้ใช้ไวยากรณ์ต่อไปนี้:

 with(data, expression)
within(data, expression)

ทอง:

  • data: ชื่อของบล็อกข้อมูล
  • การแสดงออก: การแสดงออกที่จะประเมิน

นี่คือความแตกต่างระหว่างสองฟังก์ชัน:

  • with() ประเมินนิพจน์โดยไม่ต้องแก้ไขกรอบข้อมูลดั้งเดิม
  • inside() ประเมินนิพจน์และสร้างสำเนาของกรอบข้อมูลดั้งเดิม

ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละฟังก์ชันในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (x=c(3, 5, 5, 7, 6, 10),
                 y=c(2, 2, 0, 5, 9, 4))

#view data frame
df

   xy
1 3 2
2 5 2
3 5 0
4 7 5
5 6 9
6 10 4

ตัวอย่างที่ 1: การใช้ฟังก์ชัน with()

เราสามารถใช้ฟังก์ชัน with() ต่อไปนี้เพื่อคูณค่าระหว่างสองคอลัมน์ของกรอบข้อมูล:

 #multiply values between x and y
with(df, x*y)

[1] 6 10 0 35 54 40

ค่าในคอลัมน์ x และคอลัมน์ y ในกรอบข้อมูลจะถูกคูณเข้าด้วยกันและผลลัพธ์คือเวกเตอร์ที่มีความยาว 6

ตัวอย่างที่ 2: การใช้ฟังก์ชัน inside()

เราสามารถใช้ฟังก์ชัน inside() ต่อไปนี้เพื่อคูณค่าระหว่างสองคอลัมน์ในกรอบข้อมูลและกำหนดผลลัพธ์ให้กับคอลัมน์ใหม่ในกรอบข้อมูล:

 #multiply values in x and y and assign results to new column z
within(df, z <- x*y)

   X Y Z
1 3 2 6
2 5 2 10
3 5 0 0
4 7 5 35
5 6 9 54
6 10 4 40

ผลการคูณจะถูกเก็บไว้ในคอลัมน์ใหม่ชื่อ z

สิ่งสำคัญคือต้องทราบว่าฟังก์ชัน inside() สร้างสำเนาของ data frame ดั้งเดิม แต่ไม่ได้แก้ไข data frame ดั้งเดิม:

 #view original data frame
df

   xy
1 3 2
2 5 2
3 5 0
4 7 5
5 6 9
6 10 4

หากต้องการจัดเก็บผลลัพธ์การคูณอย่างถาวร คุณต้องกำหนดผลลัพธ์ให้กับเฟรมข้อมูลใหม่:

 #multiply values in x and y and assign results to new data frame
df_new <- within(df, z <- x*y)

#view new data frame
df_new

   X Y Z
1 3 2 6
2 5 2 10
3 5 0 0
4 7 5 35
5 6 9 54
6 10 4 40

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีเพิ่มคอลัมน์ใน data frame ใน R
วิธีเพิ่มคอลัมน์ว่างลงใน data frame ใน R
วิธีจัดเรียง data frame ตามคอลัมน์ใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *