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

เวกเตอร์และลำดับที่มีชื่อ

กำหนดและเข้าถึงชื่อของเวกเตอร์เพื่อให้โค้ดอ่านง่าย

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

รู้จักเวกเตอร์ที่มีชื่อ

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

# A plain vector vs a named vector
plain <- c(78, 92, 85, 67)
named <- c(Alice = 78, Bob = 92, Carol = 85, Dave = 67)

cat('Plain vector:', plain, '
')
cat('Named vector:
')
print(named)

การสร้างเวกเตอร์ที่มีชื่อด้วย c()

วิธีที่ง่ายที่สุดในการสร้างเวกเตอร์ที่มีชื่อคือใช้คู่ name = value ภายใน c() ชื่อสามารถเป็นสตริงที่ถูกต้องใดก็ได้ หากมีช่องว่างหรืออักขระพิเศษ ให้ครอบด้วย backtick หรือเครื่องหมายคำพูด

# GDP in trillions USD
gdp <- c(USA = 27.4, China = 18.0, Germany = 4.1,
         Japan = 4.2, UK = 3.1)
cat('GDP values:
')
print(gdp)
cat('Names:', names(gdp), '
')
cat('Values:', unname(gdp), '
')

ฟังก์ชัน names()

names(x) ดึงชื่อของเวกเตอร์ออกมาเป็นเวกเตอร์อักขระ คุณยังสามารถกำหนดชื่อหลังจากสร้างเวกเตอร์แล้วได้ด้วย names(x) <- c(...) ซึ่งจะแก้ไขเวกเตอร์โดยตรง

# Assign names after creation
temps <- c(22.1, 18.5, 25.3, 20.0)
cat('Before naming:', temps, '
')

names(temps) <- c('Mon', 'Tue', 'Wed', 'Thu')
cat('After naming:
')
print(temps)

# Retrieve names
cat('Days:', names(temps), '
')

การเข้าถึงองค์ประกอบด้วยชื่อ

เข้าถึงองค์ประกอบของเวกเตอร์ที่มีชื่อด้วย x["name"] หรือ x[["name"]] วงเล็บเหลี่ยมเดี่ยว [] จะคืนชุดย่อยที่ยังมีชื่อกำกับ ส่วน [[]] จะคืนเฉพาะค่าโดยไม่มีชื่อ

scores <- c(Math = 88, Science = 92, English = 75, History = 81)

# Single bracket: keeps name
cat('Math score (with name):
')
print(scores['Math'])

# Double bracket: just the value
cat('Science score (value only):', scores[['Science']], '
')

# Multiple names
cat('STEM subjects:
')
print(scores[c('Math', 'Science')])

setNames() สำหรับรูปแบบเชิงฟังก์ชัน

setNames(x, nm) คืนสำเนาของ x ที่กำหนดชื่อเป็น nm โดยไม่แก้ไขต้นฉบับ วิธีนี้มีประโยชน์ในสายการประมวลผลเมื่อต้องการกำหนดชื่อให้เวกเตอร์เป็นส่วนหนึ่งของชุดการดำเนินการ

# setNames returns a named copy (does not modify original)
raw_values <- c(0.85, 0.72, 0.91, 0.68)
metrics <- setNames(raw_values, c('Precision', 'Recall', 'F1', 'Accuracy'))

cat('Original (unchanged):', raw_values, '
')
cat('Named metrics:
')
print(metrics)

# Best metric
best_name <- names(which.max(metrics))
cat('Best metric:', best_name, '=', metrics[best_name], '
')

การแก้ไขชื่อ

คุณสามารถเปลี่ยนชื่อแต่ละชื่อได้ด้วยการใช้ดัชนีใน names(x) วิธีนี้มีประโยชน์เมื่อต้องการเปลี่ยนชื่อองค์ประกอบบางส่วนโดยไม่ต้องสร้างเวกเตอร์ทั้งชุดใหม่

prices <- c(apple = 1.20, bannana = 0.80, cherry = 3.50)  # typo!

# Fix a single name
names(prices)[2] <- 'banana'
cat('Fixed names:
')
print(prices)

# Rename all
names(prices) <- c('Apple', 'Banana', 'Cherry')  # capitalise
cat('Capitalised:
')
print(prices)

ลำดับที่มีชื่อด้วย seq() และ names()

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

# Monthly average temperature with names
temps_monthly <- setNames(
  c(3.1, 4.2, 8.5, 13.0, 17.2, 21.0, 23.5, 23.0, 19.0, 13.5, 7.8, 4.0),
  month.abb
)
cat('Monthly temps:
')
print(temps_monthly)
cat('Summer avg:', mean(temps_monthly[c('Jun', 'Jul', 'Aug')]), '
')

การกรองเวกเตอร์ที่มีชื่อ

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

population <- c(Tokyo = 37.4, Delhi = 32.9, Shanghai = 28.5,
                Dhaka = 22.5, Cairo = 21.3, Mumbai = 20.7)

# Select cities with population > 25 million
big_cities <- population[population > 25]
cat('Cities over 25M:
')
print(big_cities)

# Sort descending by population
cat('Ranked:
')
print(sort(population, decreasing = TRUE))

การลบชื่อด้วย unname()

unname(x) จะลบชื่อทั้งหมดออกจากเวกเตอร์ และคืนเฉพาะค่า วิธีนี้มีประโยชน์เมื่อต้องส่งข้อมูลให้ฟังก์ชันที่ไม่รองรับเวกเตอร์ที่มีชื่อ หรือเมื่อชื่อทำให้ผลลัพธ์ดูรก

named_vec <- c(x1 = 10, x2 = 20, x3 = 30, x4 = 40)
cat('Named:
')
print(named_vec)

unnamed_vec <- unname(named_vec)
cat('Unnamed:
')
print(unnamed_vec)

# Check
cat('Has names after unname:', !is.null(names(unnamed_vec)), '
')

เวกเตอร์ที่มีชื่อในฐานะตารางค้นหา

การใช้งานเวกเตอร์ที่มีชื่อที่ทรงพลังอย่างหนึ่งคือการใช้เป็นตารางค้นหา ซึ่งจับคู่คีย์กับค่า แทนที่จะใช้คำสั่ง if-else ต่อกันหลายชุด ให้ใช้เวกเตอร์ที่มีชื่อแล้วใช้ดัชนีเข้าถึงค่า

# Map month abbreviation to number of days
days_in_month <- c(Jan=31, Feb=28, Mar=31, Apr=30, May=31,
                   Jun=30, Jul=31, Aug=31, Sep=30, Oct=31,
                   Nov=30, Dec=31)

# Look up specific months
query <- c('Mar', 'Jul', 'Nov')
cat('Days in', query[1], ':', days_in_month[query[1]], '
')
cat('Days in', query[2], ':', days_in_month[query[2]], '
')
cat('Days in', query[3], ':', days_in_month[query[3]], '
')

เวกเตอร์ที่มีชื่อ: ข้อเท็จจริงสำคัญ

สรุปคุณสมบัติของเวกเตอร์ที่มีชื่อใน R:

  • สร้างด้วย c(name = value, ...) หรือกำหนดผ่าน names(x) <- c(...)
  • เข้าถึงด้วยชื่อผ่าน x['name'] (คงชื่อไว้) หรือ x[['name']] (คืนเฉพาะค่า)
  • setNames(x, nm) คืนสำเนาที่มีชื่อโดยไม่แก้ไขต้นฉบับ
  • unname(x) ลบชื่อทั้งหมด
  • เวกเตอร์ที่มีชื่อทำหน้าที่เป็นตารางค้นหาที่กระชับและอ่านเข้าใจง่าย (ใช้แทนชุดคำสั่ง if-else ที่ต่อกัน)
# Complete workflow
rates <- c(USD = 1.0, EUR = 0.92, GBP = 0.79, JPY = 149.5)

# Convert 100 USD to each currency
amount_usd <- 100
converted <- amount_usd * rates
cat('100 USD in other currencies:
')
print(round(converted, 2))

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

เมื่อ x เป็นเวกเตอร์ที่มีชื่อ x['key'] และ x[['key']] แตกต่างกันอย่างไร

ทบทวน: เวกเตอร์ที่มีชื่อ

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

  • เวกเตอร์ที่มีชื่อจับคู่แต่ละองค์ประกอบกับป้ายกำกับชนิดอักขระ
  • สร้างด้วยไวยากรณ์ c(name = val) หรือกำหนดด้วย names(x) <- ...
  • x['name'] คืนชุดย่อยที่มีชื่อ ส่วน x[['name']] คืนเฉพาะค่า
  • setNames() เป็นวิธีกำหนดชื่อเชิงฟังก์ชันโดยไม่แก้ไขต้นฉบับ
  • ใช้เวกเตอร์ที่มีชื่อเป็นตารางค้นหาแทนชุดคำสั่ง if-else ที่ยืดยาว
  • unname() ลบชื่อออกเมื่อจำเป็นต้องใช้ค่าแบบดิบ
# Named vector as grade lookup
grade_map <- c('90'='A', '80'='B', '70'='C', '60'='D')
student_score <- 80

# Find grade bracket
brackets <- c(90, 80, 70, 60)
threshold <- max(brackets[brackets <= student_score])
cat('Score:', student_score, '-> Grade:', grade_map[as.character(threshold)], '
')

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

บทเรียน “เวกเตอร์และลำดับที่มีชื่อ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “เวกเตอร์และลำดับที่มีชื่อ”

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

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

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

บทเรียน “เวกเตอร์และลำดับที่มีชื่อ” ใช้เวลานานแค่ไหน

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

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

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

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

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