Chuyển đến nội dung chính

Hướng dẫn về Chuỗi trong R

Tìm hiểu về Chuỗi trong R: quy tắc, nối chuỗi, các thuộc tính thiết yếu của chuỗi, trích xuất và thay thế chuỗi ký tự, và định dạng chuỗi.
· 8 phút đọc

Khám phá cùng AI

Một chuỗi là dữ liệu ký tự gồm một hoặc một tập hợp các ký tự. Chuỗi được đặt trong dấu nháy đơn ('This is a string') hoặc dấu nháy kép ("This is also a string"). Tuy nhiên, trong biểu diễn nội bộ của R, các chuỗi được biểu diễn bằng dấu nháy kép.

Trong hướng dẫn này, bạn sẽ tìm hiểu về chuỗi trong R, với các chủ đề sau.

  1. Trước tiên, bạn sẽ xem Chuỗi trong R và Quy tắc cho Chuỗi trong R.
  2. Sau đó, bạn sẽ đi sâu vào Nối Chuỗi trong R cùng các thuộc tính thiết yếu của Chuỗi.
  3. Ngoài ra, phần Trích xuất và Thay thế Chuỗi Ký tự sẽ được giải thích chi tiết.
  4. Cuối cùng, Định dạng Chuỗi, nơi mọi đầu vào dạng vector có thể được chuyển đổi sang định dạng chuẩn.

Quy tắc cho Chuỗi trong R

    1. Chuỗi bắt đầu bằng dấu nháy đơn phải kết thúc bằng dấu nháy đơn. Tuy vậy, bạn có thể đặt dấu nháy kép bên trong, và thông qua Ký tự Thoát ('\') thì dấu nháy đơn cũng có thể trở thành một phần của chuỗi.

Ví dụ: 'cars', 'merry"s' , 'merry\'s' là các chuỗi hợp lệ trong R.

    1. Chuỗi bắt đầu bằng dấu nháy kép phải kết thúc bằng dấu nháy kép. Tuy vậy, bạn có thể đặt dấu nháy đơn bên trong, và thông qua Ký tự Thoát ('\'), dấu nháy kép cũng có thể trở thành một phần của chuỗi.

Ví dụ: "cars" , "merry's", "merry\"s" cũng là các chuỗi hợp lệ trong R.

Nối Chuỗi

Nối Chuỗi là thao tác ghép hoặc hợp nhất các chuỗi.

Cú pháp nối chuỗi trong R được thực hiện bằng:
paste(..., sep = "",collapse = NULL)
paste0(..., collapse = NULL)

Các đối số trong paste có ý nghĩa:

  1. '...' - Biểu thị một hoặc nhiều ký tự hay đối tượng được chuyển thành các vector ký tự.
  2. 'sep' - Biểu thị ký tự phân tách.
  3. 'collapse' - Biểu thị ký tự phân tách tùy chọn.

Ví dụ, xét ví dụ dưới đây nơi các biến chứa chuỗi ký tự: my.var1 = "I" my.var2 = "eat" my.var3 = "rice" print(paste(my.var1,my.var2,my.var3))

Đoạn mã trên trả về một chuỗi như sau:

"I eat rice"

Ví dụ, xét ví dụ dưới đây nơi các biến chứa vector được ghép thành một chuỗi đơn:

my.var1 = c('Book','Copy') my.var2 = c('Pen','Chair') print(paste(my.var1,my.var2,sep=" ",collapse="-"))

Đoạn mã trên cho kết quả sau:

"Book Pen-Copy Chair"

Ở đây, đầu ra có dấu '-' giữa Pen và Copy do sử dụng collapse, để phân tách giữa hai vector khác nhau. Trong khi đó, sep là một khoảng trắng (' '), phân tách các phần tử riêng lẻ.

Xét ví dụ sử dụng paste0()

paste0() coi sep = '' (tức không có khoảng trắng) và được dùng vì hiệu quả.

state.name <- paste0('Mary','l','and')
print(state.name)

Kết quả của đoạn mã trên như dưới đây, nơi mọi ký tự được ghép lại thành một và không có khoảng trắng do sep.

"Maryland"

Tìm Độ Dài

nchar(char,type, allowNA,keepNA) - Tìm tổng số ký tự trong một vector cho trước.
nzchar(char) - Trả về TRUE nếu x không rỗng và FALSE nếu nó là chuỗi rỗng.

Các đối số có ý nghĩa:

  1. char - Biểu thị một vector ký tự.
  2. type - Là một trong ba kiểu: "width","chars","bytes".
  3. allowNA - Giá trị logic mặc định là FALSE; trong trường hợp không thể tính toán kết quả thì không báo lỗi mà trả về NA.
  4. keepNA - Giá trị logic mặc định là FALSE; khi đó giá trị thiếu sẽ được ánh xạ thành 2 và nzchar() sẽ trả về TRUE, nhưng trong trường hợp giá trị thiếu, cả hai cũng sẽ ánh xạ thành TRUE.

Ví dụ dưới đây để xác định độ dài của một vector ký tự. my.char = nchar("hello") print(my.char)

Ví dụ trên trả về '5' vì có năm ký tự trong vector.

Với ví dụ sử dụng nzchar() hãy xem đoạn mã dưới:

new.char = nzchar("monkey") print(new.char)

Đoạn mã trên trả về giá trị logic 'TRUE' vì 'new.char' không phải là chuỗi rỗng.

my.char = nzchar("") print(my.char)

Đoạn mã trên trả về giá trị logic 'FALSE' vì 'my.char' là chuỗi rỗng.

Chuyển sang Chữ Hoa và Chữ Thường

toupper(char) - Chuyển tất cả ký tự thành chữ hoa.
tolower(char) - Chuyển tất cả ký tự thành chữ thường.

Ví dụ chuyển sang chữ hoa. my.var = toupper("I'm changed to upper case") print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi mỗi ký tự trong biến 'my.var' được chuyển sang chữ hoa.

"I'M CHANGED TO UPPER CASE"

Ví dụ chuyển sang chữ thường. my.var = tolower("I'm changed to lower case") print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi mỗi ký tự trong biến 'my.var' được chuyển sang chữ thường.

""i'm changed to lower case""

Trích xuất và Thay thế Chuỗi Ký tự

substr(char, start, stop): Trích xuất và Thay thế chuỗi ký tự.

Các đối số có ý nghĩa:

  1. char - Biểu thị một chuỗi ký tự.
  2. start - Số nguyên chỉ giá trị bắt đầu tương ứng sẽ được trả về.
  3. stop - Số nguyên chỉ giá trị kết thúc tương ứng sẽ được trả về.

Hãy xem ví dụ khác nơi các ký tự được trích xuất.

final.value <- substring('Remaining', 3, 9)
print(final.value)

Trong đoạn mã trên, 'Remaining' là một chuỗi với ký tự đầu tiên là 'R', được đánh chỉ số là số nguyên 1. Ký tự cuối là 'g' với chỉ số là 9.

Đoạn mã trên cho kết quả dưới đây, nơi giá trị bắt đầu là số nguyên 3, ứng với ký tự ' m ' trong 'Remaining'. Tương tự, các ký tự còn lại 'ainin' đến số nguyên 9 (bao gồm) với ký tự tương ứng là 'g' sẽ được in ra.

"maining"

Hãy xem ví dụ khác nơi các ký tự được thay thế.

y = "Remaining"
substring(y, 3, 5) <- "der"
print(y)

Đoạn mã trên cho kết quả nơi các ký tự có chỉ số từ 3 đến 5 trong y được thay bằng 'der'.

"Rederning"

substring(char, first, last = 1000000L): Trích xuất hoặc Thay thế chuỗi ký tự.
Các đối số có ý nghĩa:

  1. char - Biểu thị một chuỗi ký tự.
  2. first - Số nguyên chỉ giá trị đầu tiên tương ứng sẽ được trả về.
  3. last - Số nguyên chỉ giá trị cuối cùng tương ứng sẽ được trả về, mặc định là 1000000L.
my.value <- substring('Remaining', 3, 8)
print(my.value)

Đoạn mã trên cho kết quả dưới đây, nơi giá trị bắt đầu là số nguyên 3, ứng với ký tự ' m ' trong 'Remaining'. Tương tự, các ký tự đến số nguyên 8 (bao gồm) với ký tự tương ứng là 'n' sẽ được in ra.

"mainin"

Hãy xem ví dụ khác nơi các ký tự được thay thế.

y = "newcharacter"
substring(y, 6,9) <- "???"
print(y)

Đoạn mã trên cho kết quả nơi các ký tự có chỉ số từ 6 đến 9 trong y được thay bằng '???'.

"newch???cter"

Định dạng Chuỗi

format(char,width,scientific,justify,nsmall,digits): Chuyển một vector số nguyên và ký tự sang định dạng thường dùng.

Các đối số có ý nghĩa:

  1. char - có thể là một vector số nguyên hoặc ký tự.
  2. width - chỉ chiều rộng tối thiểu của chuỗi được tạo ra.
  3. scientific - mặc định là FALSE, đặt TRUE để dùng ký hiệu khoa học.
  4. justify - mặc định là none, nhưng có thể hiển thị chuỗi về "right", "left" và "center".
  5. nsmall - chỉ tổng số chữ số sau dấu thập phân.
  6. digits - chỉ tổng số chữ số trước và sau dấu thập phân.

Hãy lấy ví dụ định dạng chuỗi theo ký hiệu khoa học.

my.var <- format(c(2, 19.267), scientific = TRUE)
print(my.var)

Đoạn mã trên cho kết quả được biểu diễn theo ký hiệu khoa học hoặc lũy thừa.

"2.0000e+00" "1.9267e+01"

Kết quả "1.9267e+01" = 1.9267 x 10 (mũ 1) = 1.9267 x 10 = 19.267.

Hãy lấy ví dụ định dạng sử dụng nsmall.

my.var <- format(92.56656577, nsmall = 6)
print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi có 6 chữ số sau dấu thập phân.

"92.566565"

Hãy lấy ví dụ định dạng sử dụng digits.

my.var <- format(102.848793834, digits = 7)
print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi số chữ số tính từ trước đến sau dấu thập phân tổng cộng là 7.

"102.8488"

Có bảy chữ số trong kết quả, chữ số cuối đáng ra là 7 nhưng do số liền trước (9) lớn hơn 7 nên được làm tròn lên thành 8. Nói đơn giản là đã xảy ra làm tròn.

Hãy lấy ví dụ định dạng với căn phải.

my.var <- format('Running', justify = 'r',width = 9)
print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi chuỗi 'Running' được căn phải với một khoảng đệm theo width.

"  Running"

Hãy lấy ví dụ định dạng với căn giữa.

my.var <- format('Running', justify = 'c',width = 12)
print(my.var)

Đoạn mã trên cho kết quả dưới đây, nơi chuỗi 'Running' được căn giữa với khoảng đệm hai bên theo width.

"  Running   "

Chúc mừng

Chúc mừng bạn đã hoàn thành hướng dẫn này!

Bạn đã tìm hiểu về Chuỗi trong R: các quy tắc, cách nối chuỗi, các thuộc tính thiết yếu của chuỗi, Trích xuất và Thay thế Chuỗi Ký tự, và định dạng chuỗi.

Nếu bạn muốn tìm hiểu thêm về R, hãy tham gia khóa Giới thiệu về R của DataCamp.

Khám phá hướng dẫn Kiểu Dữ liệu trong R của chúng tôi.

Chủ đề

Liên quan