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

rep() สำหรับค่าที่ทำซ้ำ

ทำซ้ำค่าและเวกเตอร์ด้วย rep(), อาร์กิวเมนต์ times และ each

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

รู้จัก rep()

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

# Repeat a single value
zeros <- rep(0, times = 5)
cat('Five zeros:', zeros, '
')

# Repeat a string
status <- rep('active', times = 4)
cat('Status:', status, '
')

rep(x, times) — ทำซ้ำเวกเตอร์ทั้งชุด

เมื่อ x เป็นเวกเตอร์และ times เป็นจำนวนเต็มหนึ่งค่า rep() จะทำซ้ำเวกเตอร์ทั้งชุดตามจำนวนครั้งนั้น ความยาวของผลลัพธ์คือ length(x) * times

# Repeat a vector 3 times
weekend <- c('Saturday', 'Sunday')
four_weekends <- rep(weekend, times = 4)
cat('4 weekends:', four_weekends, '
')

# Repeat numeric vector
pattern <- c(1, 2, 3)
cat('Pattern x3:', rep(pattern, times = 3), '
')

rep(x, each) — ทำซ้ำแต่ละองค์ประกอบ

อาร์กิวเมนต์ each จะทำซ้ำแต่ละองค์ประกอบก่อนเลื่อนไปยังองค์ประกอบถัดไป นี่คือความแตกต่างสำคัญจาก times: each จะทำซ้ำองค์ประกอบ ณ ตำแหน่งเดิม

groups <- c('A', 'B', 'C')

# times: repeats whole vector
cat('times=3:', rep(groups, times = 3), '
')
# A B C A B C A B C

# each: repeats each element before next
cat('each=3 :', rep(groups, each = 3), '
')
# A A A B B B C C C

rep(x, times = c(...)) — ทำซ้ำตามจำนวนที่แตกต่างกัน

เมื่อ times เป็นเวกเตอร์ที่มีความยาวเท่ากับ x แต่ละองค์ประกอบของ x จะถูกทำซ้ำตามจำนวนครั้งที่สอดคล้องกัน วิธีนี้ช่วยให้ควบคุมการทำซ้ำได้อย่างละเอียด

# Different number of repeats per element
fruits <- c('apple', 'banana', 'cherry')
counts <- c(3, 1, 2)

fruit_basket <- rep(fruits, times = counts)
cat('Fruit basket:', fruit_basket, '
')
# apple apple apple banana cherry cherry

# Useful for creating category labels
cat('Length:', length(fruit_basket), '
')

rep_len() — ทำซ้ำให้มีความยาวคงที่

rep_len(x, length.out) จะทำซ้ำเวกเตอร์ x จนผลลัพธ์มีองค์ประกอบครบ length.out พอดี การทำซ้ำเป็นแบบวนรอบ กล่าวคือจะวนกลับไปที่ต้นเวกเตอร์เมื่อจำเป็น

# Cycle through seasons to fill 12 months
seasons <- c('Spring', 'Summer', 'Autumn', 'Winter')
year_seasons <- rep_len(seasons, length.out = 12)
cat('12 months by season:', year_seasons, '
')

# Cycle through 1, 2, 3 for 10 items
rotation <- rep_len(1:3, length.out = 10)
cat('Rotation:', rotation, '
')

การใช้ times และ each ร่วมกัน

คุณสามารถใช้ times และ each ร่วมกันเพื่อสร้างรูปแบบการทำซ้ำที่ซับซ้อนขึ้นได้ โดย R จะใช้ each ก่อน (ขยายแต่ละองค์ประกอบ) จากนั้นจึงทำซ้ำเวกเตอร์ที่ได้ด้วย times ครั้ง

# each=2 then times=3
vals <- c(1, 2)
result <- rep(vals, each = 2, times = 3)
cat('each=2, times=3:', result, '
')
# 1 1 2 2  repeated 3 times: 1 1 2 2 1 1 2 2 1 1 2 2

cat('Length:', length(result), '
')

การสร้างป้ายกำกับกลุ่มที่สมดุล

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

# 5 subjects per treatment group
treatments <- c('Control', 'LowDose', 'HighDose')
n_per_group <- 5

group_labels <- rep(treatments, each = n_per_group)
cat('Group labels:', group_labels, '
')
cat('Total subjects:', length(group_labels), '
')

# Count per group
for (g in treatments) {
  cat(g, ':', sum(group_labels == g), '
')
}

การทำซ้ำค่าตรรกะ

rep() ทำงานกับชนิดข้อมูลใดก็ได้ รวมถึงค่าตรรกะด้วย ซึ่งมีประโยชน์สำหรับสร้างมาสก์ ธง หรือรูปแบบสลับ TRUE/FALSE

# Alternating TRUE/FALSE pattern
alternate <- rep(c(TRUE, FALSE), times = 5)
cat('Alternating mask:', alternate, '
')

# Apply mask to select every other element
data_vals <- 10:19
cat('Every other value:', data_vals[alternate], '
')

# Create a block pattern: 3 TRUE then 3 FALSE
block <- rep(c(TRUE, FALSE), each = 3)
cat('Block pattern:', block, '
')

rep() สำหรับเติมข้อมูลใน matrix

คุณสามารถใช้ rep() เพื่อเติมข้อมูลที่มีรูปแบบลงใน matrix ได้อย่างรวดเร็ว เนื่องจาก matrix() รับเวกเตอร์เป็นอินพุต การใช้ร่วมกับ rep() จึงทำให้สร้าง matrix ที่มีรูปแบบได้ง่าย

# Fill a 3x4 matrix with a repeating pattern
pattern <- rep(c(1, 0), times = 6)
checker <- matrix(pattern, nrow = 3, ncol = 4)
cat('Checkerboard-like matrix:
')
print(checker)

# Fill diagonal-like with rep
fill <- rep(1:4, each = 3)
cat('Repeated fill:', fill, '
')

การขยายตารางสรุป

การใช้งานจริงอย่างหนึ่งของ rep() ร่วมกับ times ที่มีค่าต่างกัน คือการแปลงตารางความถี่กลับเป็นเวกเตอร์ข้อมูลดิบ หากทราบว่าค่าแต่ละค่าปรากฏกี่ครั้ง rep() จะสร้างข้อมูลสังเกตเหล่านั้นกลับคืนมา

# Summary: grade frequencies
grades <- c('A', 'B', 'C', 'D')
frequencies <- c(5, 12, 8, 3)

# Reconstruct raw grade vector
raw_grades <- rep(grades, times = frequencies)
cat('Raw grades (', length(raw_grades), 'students):', raw_grades, '
')

# Verify frequency table
cat('Freq table:
')
print(table(raw_grades))

สรุป rep()

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

  • rep(x, times = n) — ทำซ้ำ x ทั้งชุด n ครั้ง
  • rep(x, each = n) — ทำซ้ำแต่ละองค์ประกอบ n ครั้ง
  • rep(x, times = c(...)) — ทำซ้ำแต่ละองค์ประกอบด้วยจำนวนครั้งที่แตกต่างกัน
  • rep_len(x, n) — วนซ้ำ x จนมีองค์ประกอบครบ n ค่า
  • ทำงานกับชนิดข้อมูลใดก็ได้: ตัวเลข อักขระ ค่าตรรกะ และแฟกเตอร์
x <- c(10, 20, 30)
cat('times=2  :', rep(x, times = 2), '
')
cat('each=2   :', rep(x, each = 2), '
')
cat('var times:', rep(x, times = c(1, 2, 3)), '
')
cat('rep_len  :', rep_len(x, 7), '
')

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

rep(c(1, 2), each = 3) ให้ผลลัพธ์เป็นอะไร

ทบทวน: rep() สำหรับการทำซ้ำค่า

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

  • rep(x, times) ทำซ้ำเวกเตอร์ทั้งชุด ส่วน rep(x, each) ทำซ้ำแต่ละองค์ประกอบแยกกัน
  • การส่งเวกเตอร์ให้ times ทำให้แต่ละองค์ประกอบมีจำนวนครั้งที่ทำซ้ำแตกต่างกันได้
  • rep_len(x, n) วนซ้ำ x จนสร้างองค์ประกอบครบ n ค่าอย่างแน่นอน
  • การใช้งานทั่วไป: ป้ายกำกับกลุ่มที่สมดุล มาสก์ การขยายตารางความถี่ และ matrix ที่มีรูปแบบ
  • ทำงานในลักษณะเดียวกันกับข้อมูลชนิดตัวเลข อักขระ และตรรกะ
# Create a balanced experiment design
treatments <- c('Placebo', 'Drug_A', 'Drug_B')
subjects_per <- 4

design <- rep(treatments, each = subjects_per)
cat('Experiment design:
')
cat(design, '
')
cat('Total N:', length(design), '
')

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

บทเรียน “rep() สำหรับค่าที่ทำซ้ำ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “rep() สำหรับค่าที่ทำซ้ำ”

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

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

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

บทเรียน “rep() สำหรับค่าที่ทำซ้ำ” ใช้เวลานานแค่ไหน

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

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

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

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

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