เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจับเวลา - การขยาย Vector

การขยาย vector ทีละตัวถือเป็นหนึ่งในข้อผิดพลาดร้ายแรงใน R ที่ควรหลีกเลี่ยงเสมอ

ฟังก์ชัน growing() ที่กำหนดไว้ด้านล่างนี้สร้างตัวเลขสุ่มแบบ standard normal จำนวน n ตัว แต่ขยายขนาดของ vector ทุกครั้งที่เพิ่มสมาชิกใหม่เข้าไป!

หมายเหตุ: ตัวเลข standard normal คือตัวเลขที่สุ่มมาจากการแจกแจงปกติที่มีค่าเฉลี่ย 0 และส่วนเบี่ยงเบนมาตรฐาน 1

n <- 30000
# Slow code
growing <- function(n) {
    x <- NULL
    for(i in 1:n)
        x <- c(x, rnorm(1))
    x
}

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียน R Code อย่างมีประสิทธิภาพ

ดูคอร์ส

คำแนะนำการฝึกหัด

ฟังก์ชัน growing() ถูกกำหนดไว้ใน workspace ของคุณแล้ว

  • ใช้ฟังก์ชัน system.time() เพื่อวัดเวลาที่ใช้ในการสร้างตัวเลขสุ่มแบบ standard normal จำนวน n = 30000 ตัว ด้วยฟังก์ชัน growing() จากนั้นใช้เทคนิค <- เพื่อเก็บผลลัพธ์ไว้ใน vector ชื่อ res_grow

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)
แก้ไขและรันโค้ด