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 Crep(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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวดำเนินการโคลอนสำหรับช่วงจำนวนเต็ม
- seq() สำหรับลำดับแบบกำหนดเอง
- rep() สำหรับค่าที่ทำซ้ำ
- เวกเตอร์และลำดับที่มีชื่อ