0Pricing
R Academy · บทเรียน

seq() สำหรับลำดับแบบกำหนดเอง

ควบคุมขนาดขั้น ความยาว และทิศทางด้วย seq()

seq() สำหรับลำดับแบบกำหนดเอง เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำสู่ seq()

seq() เป็นเครื่องมือสร้างลำดับที่ยืดหยุ่นใน R ขณะที่ : สร้างช่วงจำนวนเต็มด้วยก้าว 1 แต่ seq() ให้คุณควบคุมจุดเริ่มต้น จุดสิ้นสุด ขนาดก้าว และความยาวทั้งหมดของลำดับตัวเลขใด ๆ ได้

# Basic seq() usage
basic <- seq(1, 10)
cat('seq(1, 10):', basic, '
')

# With step size
by_two <- seq(0, 20, by = 2)
cat('seq(0, 20, by=2):', by_two, '
')

seq(from, to, by) — ก้าวแบบกำหนดเอง

อาร์กิวเมนต์ by กำหนดขนาดก้าวระหว่างค่าที่อยู่ติดกัน โดยเป็นจำนวนบวกหรือลบใด ๆ ก็ได้ รวมถึงทศนิยม เหมาะสำหรับสร้างค่าที่มีระยะห่างเท่ากันแต่ช่วงไม่ใช่จำนวนเต็ม

# Decimal step
celsius <- seq(0, 100, by = 12.5)
cat('Every 12.5 degrees:', celsius, '
')

# Step of 0.1
fine_scale <- seq(1.0, 1.5, by = 0.1)
cat('Fine scale:', fine_scale, '
')

# Negative step (descending)
countdown <- seq(10, 0, by = -2)
cat('Countdown by 2:', countdown, '
')

seq(from, to, length.out) — จำนวนค่าคงที่

เมื่อคุณทราบจำนวนค่าที่ต้องการแทนที่จะทราบขนาดก้าว ให้ใช้ length.out R จะคำนวณขนาดก้าวโดยอัตโนมัติเพื่อแบ่งช่วงให้มีระยะห่างเท่ากัน

# 5 evenly spaced points between 0 and 1
unit_interval <- seq(0, 1, length.out = 5)
cat('5 points in [0,1]:', unit_interval, '
')

# 7 breakpoints for a histogram
breakpoints <- seq(0, 100, length.out = 7)
cat('Histogram breaks:', breakpoints, '
')

# Step is automatically calculated
step <- (100 - 0) / (7 - 1)
cat('Step size:', step, '
')

seq(along.with = x) — จับคู่กับเวกเตอร์

seq(along.with = x) สร้างลำดับจำนวนเต็ม 1:length(x) ซึ่งเหมือนกับ seq_along(x) ทุกประการ มีประโยชน์เมื่อคุณต้องการจับคู่ลำดับดัชนีกับเวกเตอร์ที่มีอยู่

rainfall <- c(55.2, 62.1, 48.7, 71.3, 38.9, 90.4, 45.0)

# Generate matching index sequence
idx <- seq(along.with = rainfall)
cat('Indices:', idx, '
')
cat('Rainfall:', rainfall, '
')

# Use to find position of max
cat('Position of max rainfall:', which.max(rainfall), '
')
cat('Max rainfall:', max(rainfall), 'mm
')

seq_len(n) — ปลอดภัยตั้งแต่ 1 ถึง n

seq_len(n) เทียบเท่ากับ seq(1, n) หรือ 1:n แต่จัดการกรณีพิเศษที่ n = 0 ได้อย่างถูกต้อง โดยคืนค่าเวกเตอร์จำนวนเต็มว่างแทน c(1, 0)

# Normal use
cat('seq_len(5):', seq_len(5), '
')

# Edge case: n = 0
cat('1:0       :', 1:0, '
')       # produces 1 0 (WRONG)
cat('seq_len(0):', seq_len(0), '
') # produces integer(0) (CORRECT)

# In practice: safe loop
my_data <- c()  # intentionally empty
for (i in seq_len(length(my_data))) {
  cat('Processing item', i, '
')
}
cat('Loop completed without error
')

ก้าวติดลบด้วย seq()

การกำหนดค่า by เป็นค่าลบจะสร้างลำดับจากมากไปน้อย โดย from ต้องมีค่ามากกว่า to เมื่อใช้ขั้นเป็นค่าลบ มิฉะนั้น R จะแสดงคำเตือน

# Countdown from 100 to 0
countdown_100 <- seq(100, 0, by = -10)
cat('Countdown:', countdown_100, '
')

# Temperature drop simulation
start_temp <- 30.0
end_temp <- 15.0
hourly_temps <- seq(start_temp, end_temp, by = -1.5)
cat('Hourly cooling:', hourly_temps, '
')

ลำดับเลขทศนิยม

โปรดระวังขั้นของเลขทศนิยม เนื่องจากข้อผิดพลาดเล็กน้อยจากการปัดเศษอาจทำให้ค่าท้ายสุดถูกรวมไว้หรือไม่ถูกรวมไว้อย่างไม่คาดคิด การใช้ length.out แทน by จะช่วยหลีกเลี่ยงปัญหานี้

# Floating point step: may include or exclude endpoint
seq_by <- seq(0, 1, by = 0.1)
cat('By 0.1 (', length(seq_by), 'values):', seq_by, '
')

# length.out: always exactly n values
seq_lo <- seq(0, 1, length.out = 11)
cat('length.out=11:', seq_lo, '
')

# Check: are they the same?
cat('Identical?', identical(seq_by, seq_lo), '
')

การใช้ seq() สำหรับแกนกราฟ

การใช้งานทั่วไปของ seq() คือการสร้างค่าสำหรับฟังก์ชันทางคณิตศาสตร์หรือเครื่องหมายบนแกนกราฟ ฟังก์ชันนี้ช่วยให้คุณสุ่มตัวอย่างค่าของฟังก์ชันตลอดช่วงหนึ่งด้วยระยะห่างที่สม่ำเสมอ

# Sample a sine wave
x_vals <- seq(0, 2 * pi, length.out = 13)
y_vals <- round(sin(x_vals), 3)
cat('x values (radians):', round(x_vals, 2), '
')
cat('sin(x) values:      ', y_vals, '
')

# Find the approximate peak
cat('Peak near x =', round(x_vals[which.max(y_vals)], 3), '
')

การเปรียบเทียบ seq() กับ :

ใช้ : เมื่อต้องการจำนวนเต็มที่มีขั้นเป็น 1 ใช้ seq() เมื่อต้องการขั้นทศนิยม จำนวนค่าที่ระบุแน่นอน หรือให้มีความยาวตรงกับเวกเตอร์อื่น ทั้งสองแบบสามารถให้ผลลัพธ์เหมือนกันได้สำหรับช่วงจำนวนเต็มอย่างง่าย

# These produce the same integer sequence
a <- 1:5
b <- seq(1, 5)
c_seq <- seq(1, 5, by = 1)
d <- seq(1, 5, length.out = 5)

cat('1:5            :', a, '
')
cat('seq(1,5)       :', b, '
')
cat('seq(1,5,by=1)  :', c_seq, '
')
cat('seq(1,5,lo=5)  :', d, '
')
cat('All identical? :', identical(a, d), '
')

ภาคปฏิบัติ: การสร้างจุดเวลา

seq() เหมาะอย่างยิ่งสำหรับสร้างแกนเวลาในการวิเคราะห์ข้อมูล เช่น การสร้างช่วงเวลารายเดือน รายไตรมาส หรือรายปีสำหรับการทำงานกับอนุกรมเวลา

# Monthly data points (as numeric month indices)
months_idx <- seq(1, 12, by = 1)
month_names <- month.abb  # built-in R constant
cat('Month indices:', months_idx, '
')
cat('Month names  :', month_names, '
')

# Quarterly: every 3 months
quarters <- seq(1, 12, by = 3)
cat('Quarter starts:', quarters, '
')
cat('Quarter names :', month_names[quarters], '
')

สรุปอาร์กิวเมนต์ของ seq()

ต่อไปนี้คือข้อมูลอ้างอิงโดยย่อสำหรับอาร์กิวเมนต์ของ seq():

  • from — ค่าเริ่มต้น (ค่าเริ่มต้นคือ 1)
  • to — ค่าสิ้นสุด (ค่าเริ่มต้นคือ 1)
  • by — ขนาดขั้นระหว่างค่า
  • length.out — จำนวนค่าที่ต้องการสร้างอย่างแน่นอน
  • along.with — ให้มีความยาวตรงกับเวกเตอร์อื่น

ควรกำหนด by หรือ length.out เพียงอย่างใดอย่างหนึ่ง

# Five different forms of seq()
cat('seq(5)               :', seq(5), '
')
cat('seq(2, 10)           :', seq(2, 10), '
')
cat('seq(0, 1, by=0.25)   :', seq(0, 1, by = 0.25), '
')
cat('seq(0, 1, length.out=5):', seq(0, 1, length.out = 5), '
')
cat('seq(along.with=1:4)  :', seq(along.with = 1:4), '
')

ตรวจสอบความเข้าใจอย่างรวดเร็ว

seq(0, 1, length.out = 6) สร้างค่าทั้งหมดกี่ค่า

ทบทวน: seq() สำหรับลำดับที่กำหนดเอง

ทำได้ดีมาก! ประเด็นสำคัญจากบทเรียนนี้:

  • seq(from, to, by) — สร้างลำดับด้วยขนาดขั้นคงที่
  • seq(from, to, length.out = n) — สร้างค่าที่มีระยะห่างเท่ากันจำนวน n ค่าอย่างแน่นอน
  • seq(along.with = x) — สร้างดัชนีที่มีความยาวตรงกับเวกเตอร์ x
  • seq_len(n) — รุ่นที่ปลอดภัยของ 1:n (รองรับกรณี n=0)
  • ควรใช้ length.out แทน by สำหรับลำดับเลขทศนิยม เพื่อหลีกเลี่ยงปัญหาการปัดเศษ
  • ใช้ seq() เมื่อ : ไม่เพียงพอ เช่น เมื่อต้องการขั้นที่ไม่ใช่จำนวนเต็มหรือจำนวนค่าคงที่
# Final demo: all seq() forms
cat('Even 0-10:    ', seq(0, 10, by = 2), '
')
cat('5 in [0,1]:   ', seq(0, 1, length.out = 5), '
')
cat('Match 3-elem: ', seq(along.with = c('a', 'b', 'c')), '
')
cat('Safe 1:0:     ', seq_len(0), '(empty)
')

คำถามที่พบบ่อย

บทเรียน “seq() สำหรับลำดับแบบกำหนดเอง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “seq() สำหรับลำดับแบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “seq() สำหรับลำดับแบบกำหนดเอง”

ควบคุมขนาดขั้น ความยาว และทิศทางด้วย seq() คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “seq() สำหรับลำดับแบบกำหนดเอง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม

ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวดำเนินการโคลอนสำหรับช่วงจำนวนเต็ม
  2. seq() สำหรับลำดับแบบกำหนดเอง
  3. rep() สำหรับค่าที่ทำซ้ำ
  4. เวกเตอร์และลำดับที่มีชื่อ
← กลับไปที่ R Academy