ประเภทข้อมูลใน R พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 Atomประเภท ic: R จัดเก็บค่าทุกประเภทในรูปแบบตรรกะ จำนวนเต็ม ทศนิยม จำนวนเชิงซ้อน อักขระ หรือค่าดิบ
  • ☑️ การตรวจสอบประเภท: ฟังก์ชัน `class(), typeof()` และ `mode()` อธิบายค่าจากสามมุมมองที่แตกต่างกัน
  • เวกเตอร์: ฟังก์ชัน c() สร้างคอลเลกชันแบบหนึ่งมิติซึ่งแต่ละองค์ประกอบมีประเภทเดียวกัน
  • 🧪 Operaทอร์: ตัวดำเนินการทางคณิตศาสตร์ ความสัมพันธ์ ตรรกะ และการกำหนดค่า ครอบคลุมนิพจน์พื้นฐานเกือบทุกรูปแบบในภาษา R
  • 🛠️ การแบ่งกลุ่มย่อย: วงเล็บเหลี่ยมรวมกับตัวกรองเงื่อนไขเชิงตรรกะและองค์ประกอบเวกเตอร์ในบรรทัดเดียว
  • ⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: R 4.3.0 เปลี่ยนการรับค่าอาร์กิวเมนต์ที่มีความยาวมากกว่าหนึ่งให้กับ && หรือ || ให้เป็นข้อผิดพลาด

ประเภทข้อมูลใน R

ประเภทข้อมูลใน R คืออะไร?

ต่อไปนี้เป็นประเภทข้อมูลหรือโครงสร้างข้อมูลในการเขียนโปรแกรม R:

รายการดังกล่าวเป็นการผสมผสานแนวคิดสองอย่างที่เกี่ยวข้องกัน และการแยกแนวคิดเหล่านั้นออกจากกันจะทำให้ส่วนที่เหลือของหน้านี้อ่านเข้าใจง่ายขึ้น A ประเภทข้อมูล อธิบายว่าค่าเดียวคืออะไร — ตัวเลข ข้อความ ค่าจริง หรือค่าเท็จ โครงสร้างข้อมูล อธิบายว่าค่าต่างๆ ถูกจัดเก็บไว้ด้วยกันกี่ค่าและอยู่ในรูปแบบใด สเกลาร์ เวกเตอร์ เมทริกซ์ เฟรมข้อมูล และลิสต์ ล้วนเป็นโครงสร้าง ค่าภายในโครงสร้างเหล่านั้นยังคงเป็นของประเภทพื้นฐานอย่างใดอย่างหนึ่งของ R

โครงสร้าง ขนาด อนุญาตให้ใช้หลายประเภทผสมกันได้หรือไม่? การใช้งานทั่วไป
เกลา เวกเตอร์ความยาว -1 ไม่ การวัดหรือธงเพียงครั้งเดียว
เวกเตอร์ 1 ไม่ คอลัมน์ของค่าที่อ่านได้ประเภทหนึ่ง
มดลูก 2 ไม่ ตารางตัวเลขและพีชคณิตเชิงเส้น
เฟรมข้อมูล 2 ใช่ หนึ่งประเภทต่อหนึ่งคอลัมน์ ชุดข้อมูลแบบตาราง
รายการ 1 แต่สามารถซ้อนกันได้ ใช่ อะไรก็ได้ต่อองค์ประกอบ ผลลัพธ์ของแบบจำลองและภาชนะบรรจุแบบผสม

R ไม่มีชนิดข้อมูลสเกลาร์แยกต่างหาก: สเกลาร์เป็นเพียงเวกเตอร์ที่มีความยาวหนึ่ง ซึ่งเป็นเหตุผลว่าทำไมโค้ด R จำนวนมากจึงเขียนขึ้นสำหรับเวกเตอร์ทั้งหมดในคราวเดียว

ประเภทข้อมูลพื้นฐานใน R

ค่าทุกค่าใน R เป็นของชุดประเภทพื้นฐาน (อะตอมิก) จำนวนเล็กน้อย:

  • 4.5 เป็นค่าทศนิยมที่เรียกว่าตัวเลข
  • 4 ดูเหมือนจะเป็นจำนวนเต็ม แต่ R ยังคงเก็บค่าเป็นเลขฐานสอง ดังนั้นควรเขียน 4L เมื่อต้องการค่าเป็นจำนวนเต็มที่แท้จริง
  • TRUE หรือ FALSE เป็นค่าบูลีน ซึ่งเรียกว่าค่าตรรกะในภาษา R
  • ค่าที่อยู่ภายในเครื่องหมาย ” ” หรือ ' ' คือข้อความ (สตริง) ค่าเหล่านั้นเรียกว่าอักขระ

นอกจากนี้ยังมีอีกสองประเภทที่ทำให้ชุดข้อมูลสมบูรณ์ ค่าเชิงซ้อน เช่น 3+2i ประกอบด้วยส่วนจริงและส่วนจินตนาการ และค่าดิบซึ่งเก็บเป็นไบต์ ทั้งสองประเภทนี้พบได้ไม่บ่อยนักในการวิเคราะห์ในชีวิตประจำวัน แต่ก็มีอยู่ในชุดข้อมูลพื้นฐานของ R เอกสารประเภท() นอกเหนือจากประเภททั่วไปทั้งสี่ประเภทแล้ว

ประเภท ค่าตัวอย่าง คลาส() ส่งคืนค่า typeof() ส่งคืนค่า
ตรรกะ TRUE ตรรกะ ตรรกะ
จำนวนเต็ม 4L จำนวนเต็ม จำนวนเต็ม
Double (ตัวเลข) 4.5 เป็นตัวเลข สอง
คาแรคเตอร์ "R ยอดเยี่ยมมาก" ตัวอักษร ตัวอักษร
ซับซ้อน 3+2i ซับซ้อน ซับซ้อน
ดิบ as.raw(10) ดิบ ดิบ

เราสามารถตรวจสอบชนิดของตัวแปรได้โดยใช้ฟังก์ชันของคลาส

ตัวอย่างที่ 1: ตรวจสอบตัวแปรตัวเลข

# Declare variables of different types
# Numeric
x <- 28
class(x)

Output:

## [1] "numeric"

ตัวอย่างที่ 2: ตรวจสอบตัวแปรอักขระ

# String
y <- "R is Fantastic"
class(y)

Output:

## [1] "character"

ตัวอย่างที่ 3: ตรวจสอบตัวแปรตรรกะ

# Boolean
z <- TRUE
class(z)

Output:

## [1] "logical"

โปรดสังเกตว่าฟังก์ชัน `class()` ตอบว่า "numeric" สำหรับค่า 28 แม้ว่า 28 จะไม่มีทศนิยมก็ตาม R เก็บค่านี้ไว้เป็นประเภท double และมีเพียงฟังก์ชัน `typeof()` เท่านั้นที่จะเปิดเผยข้อมูลนี้ได้ ความแตกต่างถัดไปที่ควรเรียนรู้คือวิธีการตั้งชื่อให้กับค่าเหล่านั้น

ตัวแปรใน R

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

ในการประกาศตัวแปรใน R เราต้องกำหนดชื่อตัวแปร ชื่อตัวแปรต้องไม่มีช่องว่าง เราสามารถใช้เครื่องหมาย _ เพื่อเชื่อมคำสองคำเข้าด้วยกันได้

ชื่อตัวแปรอาจประกอบด้วยตัวอักษร ตัวเลข จุด และขีดล่าง แต่ต้องขึ้นต้นด้วยตัวอักษรหรือจุด และคำสงวน เช่น TRUE, FALSE และ NULL ไม่สามารถใช้เป็นชื่อตัวแปรได้ ในการเพิ่มค่าให้กับตัวแปร ให้ใช้ <- หรือ =

นี่คือไวยากรณ์:

# First way to declare a variable:  use the `<-`
name_of_variable <- value
# Second way to declare a variable:  use the `=`
name_of_variable = value

ในบรรทัดคำสั่ง เราสามารถเขียนโค้ดต่อไปนี้เพื่อดูว่าจะเกิดอะไรขึ้น:

ตัวอย่างที่ 1: กำหนดค่าและพิมพ์ค่า

# Print variable x
x <- 42
x

Output:

## [1] 42

ตัวอย่างที่ 2: การประกาศตัวแปรตัวที่สอง

y  <- 10
y

Output:

## [1] 10

ตัวอย่างที่ 3: การใช้ตัวแปรสองตัวในนิพจน์เดียว

# We call x and y and apply a subtraction
x-y

Output:

## [1] 32

ตัวแปรที่เก็บค่าหลายค่าที่มีชนิดข้อมูลเดียวกันเรียกว่าเวกเตอร์ ซึ่งเป็นโครงสร้างที่ฟังก์ชันเกือบทุกฟังก์ชันในภาษา R ต้องการ

เวกเตอร์ใน R

เวกเตอร์คือชุดข้อมูลหนึ่งมิติที่ทุกองค์ประกอบมีชนิดข้อมูลเดียวกัน เราสามารถสร้างเวกเตอร์ด้วยชนิดข้อมูลพื้นฐานทั้งหมดของ R ที่ได้เรียนรู้ไปก่อนหน้านี้ วิธีที่ง่ายที่สุดในการสร้างเวกเตอร์ใน R คือการใช้ฟังก์ชัน c()

ตัวอย่างที่ 1: สร้างเวกเตอร์ตัวเลข

# Numerical
vec_num <- c(1, 10, 49)
vec_num

Output:

## [1]  1 10 49

ตัวอย่างที่ 2: สร้างเวกเตอร์ตัวอักษร

# Character 
vec_chr <- c("a", "b", "c")
vec_chr

Output:

## [1] "a" "b" "c"

ตัวอย่างที่ 3: สร้างเวกเตอร์เชิงตรรกะ

# Boolean 
vec_bool <-  c(TRUE, FALSE, TRUE)
vec_bool

Output:

##[1] TRUE FALSE TRUE

ถ้าฟังก์ชัน c() รับค่าที่มีประเภทต่างกัน ฟังก์ชันจะไม่เกิดข้อผิดพลาด มันจะแปลงค่าแต่ละองค์ประกอบให้เป็นประเภทที่ทั่วไปที่สุดที่มีอยู่โดยอัตโนมัติ ดังนั้น c(1, "a", TRUE) จึงกลายเป็นเวกเตอร์อักขระ นอกจากนี้ เรายังสามารถคำนวณทางคณิตศาสตร์บนเวกเตอร์ใน R ได้อีกด้วย

ตัวอย่างที่ 4: บวกเวกเตอร์สองตัวเข้าด้วยกันทีละองค์ประกอบ

# Create the vectors
vect_1 <- c(1, 3, 5)
vect_2 <- c(2, 4, 6)
# Take the sum of A_vector and B_vector
sum_vect <- vect_1 + vect_2
# Print out total_vector
sum_vect

Output:

[1]  3  7 11

การบวกจะทำงานทีละองค์ประกอบเนื่องจากเวกเตอร์ทั้งสองมีความยาวเท่ากัน เมื่อความยาวแตกต่างกัน R จะนำเวกเตอร์ที่สั้นกว่ามาใช้ซ้ำ จนกว่าจะตรงกับเวกเตอร์ที่ยาวกว่า และจะแจ้งเตือนเฉพาะเมื่อความยาวของเวกเตอร์ที่ยาวกว่าไม่ใช่ผลคูณของเวกเตอร์ที่สั้นกว่าเท่านั้น

ตัวอย่างที่ 5: หั่นองค์ประกอบห้าอย่างแรก

ใน R เราสามารถแบ่งเวกเตอร์ออกเป็นส่วนๆ ได้ ในบางครั้ง เราอาจสนใจเฉพาะห้าองค์ประกอบแรกของเวกเตอร์ เราสามารถใช้คำสั่ง [1:5] เพื่อแยกส่วนเหล่านั้นได้tract มีค่าตั้งแต่ 1 ถึง 5

# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]

Output:

## [1] 1 2 3 4 5

ตัวอย่างที่ 6: สร้างช่วงโดยใช้เครื่องหมายโคลอน OperaTor

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

# Faster way to create adjacent values
c(1:10)

Output:

## [1]  1  2  3  4  5  6  7  8  9 10

เนื่องจากเวกเตอร์จะเปลี่ยนประเภทโดยไม่แจ้งให้ทราบเมื่อมีการผสมกัน จึงควรทราบวิธีการตรวจสอบและแปลงประเภทตามต้องการ

วิธีการตรวจสอบและแปลงชนิดข้อมูลใน R

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

ตระกูลฟังก์ชัน คำถามมันตอบ ตัวอย่าง
คลาส(), ประเภทของ(), โหมด() ค่านี้เป็นประเภทอะไร? คลาส(28), ประเภทของ(28), โหมด(28)
เป็น.*() ค่านี้เป็นค่าประเภท X หรือไม่? เป็นตัวเลข(), เป็นอักขระ(), เป็นตรรกะ()
เช่น.*() ค่านี้สามารถกลายเป็นประเภท X ได้หรือไม่? as.numeric(), as.character(), as.integer()
str () วัตถุชิ้นนี้มีลักษณะโดยรวมอย่างไร? str(vec_num)
# Three different views of the same value
x <- 28
class(x)      # "numeric"  -- the class used for method dispatch
typeof(x)     # "double"   -- how R stores the value internally
mode(x)       # "numeric"  -- the older S-style mode

# Ask a yes/no question about a type
is.numeric(x)     # TRUE
is.character(x)   # FALSE

# Convert between types
as.character(x)   # "28"
as.integer("28")  # 28 stored as an integer
as.numeric("abc") # NA, with a coercion warning

กฎสองข้อนี้อธิบายถึงความประหลาดใจส่วนใหญ่ได้ที่นี่ ข้อแรก ฟังก์ชัน `class()` รายงานคลาสที่ใช้สำหรับการเรียกใช้เมธอด ในขณะที่ `typeof()` รายงานการจัดเก็บภายใน ซึ่งเป็นเหตุผลว่าทำไม 28 จึงเป็น "numeric" สำหรับฟังก์ชันหนึ่ง และเป็น "double" สำหรับอีกฟังก์ชันหนึ่ง ข้อที่สอง การแปลงที่ไม่สำเร็จจะไม่หยุดสคริปต์: `as.numeric("abc")` ส่งคืนค่า `NA` และพิมพ์คำเตือนการแปลง ดังนั้นค่า `NA` ที่ไม่แสดงขึ้นมาหลังจากนำเข้าจึงมักเป็นปัญหาเกี่ยวกับประเภทข้อมูล ตรรกะเดียวกันนี้ใช้ในการขับเคลื่อน... ปัจจัยซึ่งจัดเก็บหมวดหมู่ในรูปแบบรหัสจำนวนเต็ม พร้อมด้วยตารางระดับ

เมื่อกำหนดประเภทต่างๆ เสร็จแล้ว ขั้นตอนต่อไปคือการกำหนดตัวดำเนินการที่ทำงานกับประเภทเหล่านั้น

R เลขคณิต Operaโปร

เราจะมาดูตัวดำเนินการทางคณิตศาสตร์พื้นฐานในภาษา R กันก่อน ต่อไปนี้คือตัวดำเนินการทางคณิตศาสตร์ในภาษา R และความหมายของแต่ละตัว:

OperaTor Descriptไอออน
+ นอกจากนี้
- ตtracการ
* การคูณ
/ การแบ่ง
^ หรือ ** ยกกำลัง
%% โมดูลัส (เศษเหลือหลังการหาร)
%/% การหารจำนวนเต็ม (ผลหาร ทิ้งเศษเหลือ)

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

ตัวอย่างที่ 1: การบวก

# An addition
3 + 4

Output:

## [1] 7

คุณสามารถคัดลอกและวางโค้ด R ด้านบนลงใน... ได้อย่างง่ายดาย RStudio คอนโซล ในบทความนี้ ผลลัพธ์จะแสดงในบรรทัดที่ขึ้นต้นด้วย ## ตัวอย่างเช่น ถ้าเราเขียนโค้ด print("Guru99") คอนโซลพิมพ์ [1] "Guru99" ซึ่งหน้านี้จะแสดงเป็น ## [1] "Guru99"

เครื่องหมาย ## แสดงถึงบรรทัดของผลลัพธ์ที่พิมพ์ และตัวเลขในวงเล็บเหลี่ยม ([1]) คือดัชนีของค่าแรกในบรรทัดนั้น ไม่ใช่ส่วนหนึ่งของผลลัพธ์

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

ตัวอย่างที่ 2: การคูณ

# A multiplication
3*5

Output:

## [1] 15

ตัวอย่างที่ 3: การหาร

# A division
(5+5)/2

Output:

## [1] 5

ตัวอย่างที่ 4: การยกกำลัง

# Exponentiation
2^5

Output:

## [1] 32

ตัวอย่างที่ 5: โมดูลัส

# Modulo
28%%6

Output:

## [1] 4

การคำนวณทางคณิตศาสตร์ให้ผลลัพธ์เป็นตัวเลข ส่วนกลุ่มตัวดำเนินการถัดไปจะให้ผลลัพธ์เป็นค่าจริงและค่าเท็จแทน

R เชิงสัมพันธ์ (การเปรียบเทียบ) Operaโปร

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

OperaTor Descriptไอออน
> มากกว่า
< Less กว่า
>= มากกว่าหรือเท่ากับ
<= Less มากกว่าหรือเท่ากับ
== เท่ากับอย่างแน่นอน
!= ไม่เท่ากับ
a <- 10
b <- 3

a > b     # TRUE
a < b     # FALSE
a >= 10   # TRUE
a <= 3    # FALSE
a == b    # FALSE
a != b    # TRUE

# Relational operators are vectorised
scores <- c(45, 78, 90, 62)
scores >= 60   # FALSE TRUE TRUE TRUE

สองวิธีนี้จะช่วยประหยัดเวลาได้ ใช้ == สำหรับการเปรียบเทียบ และ <- สำหรับการกำหนดค่า เพราะการใช้ = ตัวเดียวภายในเงื่อนไขเป็นข้อผิดพลาดทั่วไปของมือใหม่ และควรหลีกเลี่ยงการใช้ == กับตัวเลขทศนิยม: การปัดเศษของเลขทศนิยมหมายความว่า 0.1 + 0.2 == 0.3 เป็นเท็จ ดังนั้น isTRUE(all.equal(0.1 + 0.2, 0.3)) จึงเป็นการทดสอบที่ปลอดภัย การเปรียบเทียบ... เฟรมข้อมูลที่เรียงลำดับแล้ว ปฏิบัติตามกฎเดียวกัน

อาร์ ลอจิก Operaโปร

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

ตารางอ้างอิงตัวดำเนินการตรรกะและตัวดำเนินการเชิงสัมพันธ์ในภาษา R พร้อมความหมาย

คำสั่งเชิงตรรกะใน R จะอยู่ภายในวงเล็บเหลี่ยม [] เราสามารถเพิ่มคำสั่งเงื่อนไขได้มากเท่าที่ต้องการ แต่เราต้องใส่ไว้ในวงเล็บ เราสามารถใช้โครงสร้างนี้เพื่อสร้างคำสั่งเงื่อนไขได้:

variable_name[(conditional_statement)]

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

ตัวอย่างที่ 1: เปรียบเทียบองค์ประกอบทุกตัวของเวกเตอร์

# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5

Output:

## [1]FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

ในผลลัพธ์ข้างต้น R จะอ่านแต่ละค่าและเปรียบเทียบกับเงื่อนไข logical_vector>5 หากค่ามากกว่าห้าอย่างชัดเจน เงื่อนไขจะเป็น TRUE มิฉะนั้นจะเป็น FALSE R จะส่งคืนเวกเตอร์ของ TRUE และ FALSE

ตัวอย่างที่ 2: เก็บเฉพาะองค์ประกอบที่ตรงกันเท่านั้น

ในตัวอย่างด้านล่าง เราต้องการแสดงtracสำหรับค่าต่างๆ ที่ตรงตามเงื่อนไข 'ต้องมากกว่าห้าอย่างเคร่งครัด' นั้น เราสามารถใส่เงื่อนไขไว้ในวงเล็บเหลี่ยม โดยมีเวกเตอร์ที่บรรจุค่าเหล่านั้นอยู่ข้างหน้า

# Print value strictly above 5
logical_vector[(logical_vector>5)]

Output:

## [1]  6  7  8  9 10

ตัวอย่างที่ 3: การรวมสองเงื่อนไขเข้าด้วยกัน

# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]

Output:

## [1] 5 6

ตัวอย่างที่ 3 ใช้เครื่องหมายแอมเปอร์แซนด์เดี่ยว & โดยเจตนา ตัวดำเนินการอักขระเดี่ยว & และ | เปรียบเทียบองค์ประกอบเวกเตอร์ทีละองค์ประกอบและส่งคืนเวกเตอร์ ซึ่งเป็นสิ่งที่การเลือกย่อยต้องการ ตัวดำเนินการอักขระคู่ && และ || ส่งคืนค่าเดียวและอยู่ในเงื่อนไข if() และ while() เนื่องจาก 4.3.0 Rการส่งอาร์กิวเมนต์ที่มีความยาวมากกว่าหนึ่งองค์ประกอบไปยัง && หรือ || จะถือเป็นข้อผิดพลาด ไม่ใช่คำเตือน ดังนั้นตัวดำเนินการทั้งสองประเภทจึงไม่สามารถใช้แทนกันได้อีกต่อไป ตัวดำเนินการ ! ใช้สำหรับปฏิเสธเงื่อนไข และ xor() ใช้สำหรับดำเนินการ Exclusive OR

การมอบหมายงาน R Operaโปร

ตัวดำเนินการกำหนดค่าจะผูกค่าเข้ากับชื่อ ภาษา R มีตัวดำเนินการเหล่านี้มากกว่าภาษาโปรแกรมส่วนใหญ่ และความแตกต่างเหล่านี้มีความสำคัญเมื่อโค้ดถูกนำไปใช้งานจริง ฟังก์ชั่น.

OperaTor Descriptไอออน
<- การกำหนดค่าทางซ้าย ซึ่งเป็นทางเลือกตามสำนวนในภาษา R
= การกำหนดค่าทางซ้าย แต่โดยปกติจะสงวนไว้สำหรับอาร์กิวเมนต์ของฟังก์ชัน
-> การกำหนดที่ถูกต้อง ใช้ได้ แต่ไม่ค่อยได้ใช้
<<- การกำหนดขอบเขตงานที่ค้นหาสภาพแวดล้อมโดยรอบ
- >> การมอบหมายงานระดับสูงที่ถูกต้อง
# Left assignment -- the idiomatic form
count <- 5

# Equals sign: works, but reserve it for function arguments
count = 5
round(3.14159, digits = 2)

# Right assignment
5 -> count

# Superassignment, used inside functions to reach an outer scope
count <<- 5

คู่มือการเขียนโค้ดแนะนำให้ใช้ <- สำหรับการสร้างอ็อบเจ็กต์ และ = สำหรับการตั้งชื่ออาร์กิวเมนต์ภายในฟังก์ชันเรียกใช้ เนื่องจากจะทำให้เห็นความแตกต่างระหว่างสองบทบาทนี้ได้อย่างชัดเจน ควรใช้ <<- อย่างระมัดระวัง เพราะมันจะเปลี่ยนแปลงอ็อบเจ็กต์ภายนอกฟังก์ชันปัจจุบัน และทำให้โค้ดเข้าใจยากขึ้น เมื่อเข้าใจเรื่องการกำหนดค่าและชนิดข้อมูลแล้ว ขั้นตอนต่อไปคือ... นำเข้าข้อมูลจริง และเรชาping มันด้วย ดีพลีร์; ภาพรวมภาษา R ช่วยให้เข้าใจบริบทของชุดเครื่องมือทั้งหมดได้ดียิ่งขึ้น

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

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

เมื่อเวกเตอร์สองตัวที่มีความยาวต่างกันมาเจอกับตัวดำเนินการ R จะทำซ้ำเวกเตอร์ที่สั้นกว่าจนกว่าความยาวจะตรงกัน ตัวอย่างเช่น c(1,2,3,4) + c(1,2) จะได้ 2 4 4 6 คำเตือนจะปรากฏขึ้นเฉพาะเมื่อความยาวที่ยาวกว่าไม่ใช่จำนวนเท่าทวีคูณเท่านั้น

NA หมายถึงค่าที่หายไปในเวกเตอร์ NULL หมายถึงการไม่มีอยู่ของวัตถุและมีความยาวเป็นศูนย์ NaN คือผลลัพธ์ตัวเลขที่ไม่สามารถกำหนดได้ เช่น 0/0 Inf คือการหารด้วยศูนย์ เช่น 1/0

ตัวดำเนินการ %in% จะทดสอบการเป็นสมาชิกและส่งคืนค่า TRUE สำหรับแต่ละองค์ประกอบด้านซ้ายที่พบในเวกเตอร์ด้านขวา c(2,7) %in% c(1,2,3) ส่งคืนค่า TRUE FALSE มันจะแทนที่การเปรียบเทียบ == ที่ยาวๆ ซึ่งเชื่อมด้วย |

เลือกหลักสูตรเตรียมความพร้อมสอบ เมทริกซ์ สำหรับตารางตัวเลขและพีชคณิตเชิงเส้น, a กรอบข้อมูล สำหรับตารางที่มีคอลัมน์ประเภทแตกต่างกัน และ รายการ เมื่อองค์ประกอบมีรูปร่างแตกต่างกัน

คำสั่ง |> ซึ่งถูกนำมาใช้ใน R เวอร์ชัน 4.1.0 นั้น จะส่งค่าทางด้านซ้ายไปยังอาร์กิวเมนต์แรกของฟังก์ชันทางด้านขวา มันเชื่อมโยงขั้นตอนต่างๆ โดยไม่ต้องเรียกฟังก์ชันซ้อนกัน และไม่จำเป็นต้องใช้แพ็กเกจใดๆ ซึ่งแตกต่างจากคำสั่ง %>% ของ magrittr

ผู้ช่วย AI จะระบุความไม่ตรงกันของประเภทข้อมูล แนะนำการแปลงเป็น as.* และร่างโค้ดการเข้ารหัสใหม่จากตัวอย่างแถว นอกจากนี้ยังเสนอขั้นตอนการสร้างคุณลักษณะก่อนที่จะดำเนินการต่อไป เรียนรู้เครื่อง โมเดลได้รับการปรับแต่งแล้ว โปรดตรวจสอบโค้ดที่สร้างขึ้นเทียบกับข้อมูลของคุณเสมอ

ใช่แล้ว RStudio เวอร์ชัน 2023.09.0 และเวอร์ชันที่ใหม่กว่าได้รวมฟีเจอร์นี้ไว้ด้วย นักบิน GitHub การผสานรวมที่ช่วยเติมเต็มนิพจน์ R แบบอินไลน์ จำเป็นต้องสมัครใช้งาน Copilot และผู้ดูแลระบบต้องเปิดใช้งานบน RStudio Server หรือ Posit Workbench

สรุปโพสต์นี้ด้วย: