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

Hướng dẫn R Packages: Cài đặt, Nạp và Quản lý Gói R

Tìm hiểu cách cài đặt, nạp, cập nhật và quản lý gói R từ CRAN, Bioconductor và GitHub. Bao gồm renv, devtools và tài liệu gói.
Đã cập nhật 5 thg 10, 2026  · 15 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

R là một trong những ngôn ngữ lập trình được dùng rộng rãi nhất cho thống kê và khoa học dữ liệu, và phần lớn sức mạnh của nó đến từ các gói. Dù bạn cần xử lý ngôn ngữ tự nhiên, lấy dữ liệu thời tiết từ web, hay chạy các mô hình thống kê phức tạp, gần như chắc chắn đã có gói cho việc đó. Tính đến năm 2026, kho chính thức (CRAN) lưu trữ hơn 21.000 gói, và còn nhiều gói khác được phát hành công khai trên internet.

Nếu bạn mới bắt đầu với R, tôi sẽ hướng dẫn bạn những điều cơ bản về gói R và cách sử dụng. Chúng ta sẽ đề cập đến:

Gói R là gì?

Gói R là tập hợp các hàm và bộ dữ liệu do cộng đồng phát triển. Chúng tăng sức mạnh cho R bằng cách cải tiến các chức năng sẵn có của base R, hoặc bổ sung những chức năng mới. Ví dụ, nếu bạn thường làm việc với data frame, có lẽ bạn đã nghe đến dplyr hoặc data.table, hai trong số những gói R phổ biến nhất.

Một gói thường đóng gói mã R (và đôi khi cả mã C hoặc Fortran biên dịch), tài liệu, kiểm thử và bộ dữ liệu thành một đơn vị duy nhất để bạn chia sẻ và tái sử dụng.

Thông tin cơ bản về một gói được cung cấp trong tệp DESCRIPTION, nơi bạn có thể biết gói làm gì, tác giả là ai, phiên bản tài liệu thuộc phiên bản nào, ngày tháng, loại giấy phép sử dụng, và các phụ thuộc của gói.

Lưu ý bạn cũng có thể dùng liên kết stats thay thế để xem tệp DESCRIPTION.

Ngoài việc tìm tệp DESCRIPTION trên các trang như cran.r-project.org hoặc stat.ethz.ch, bạn cũng có thể truy cập tệp mô tả ngay trong R với lệnh packageDescription("package"), qua tài liệu của gói help(package = "package"), hoặc trực tuyến trong kho lưu trữ của gói.

Ví dụ, với gói “stats”, các cách này sẽ là:

packageDescription("stats")
help(package = "stats")

Kho R là gì?

Kho (repository) là nơi đặt các gói để bạn có thể cài chúng từ đó. Dù bạn hoặc tổ chức của bạn có thể có kho nội bộ, thường thì chúng ở trên mạng và mọi người đều có thể truy cập. Ba kho phổ biến nhất cho gói R là:

  • CRAN: kho chính thức, là mạng lưới máy chủ ftp và web do cộng đồng R trên toàn thế giới duy trì. Quỹ R điều phối, và để một gói được xuất bản ở đây, nó cần vượt qua nhiều kiểm thử đảm bảo gói tuân thủ chính sách CRAN. 
  • Bioconductor: kho theo chủ đề dành cho phần mềm mã nguồn mở trong tin sinh học. Tương tự CRAN, nó có quy trình nộp và đánh giá riêng, và cộng đồng rất năng động với nhiều hội thảo và cuộc họp mỗi năm.
  • GitHub: dù không dành riêng cho R, GitHub có lẽ là kho phổ biến nhất cho các dự án mã nguồn mở. Sự phổ biến đến từ dung lượng không giới hạn cho mã nguồn mở, tích hợp với git, một phần mềm quản lý phiên bản, và khả năng chia sẻ, hợp tác dễ dàng. Tuy nhiên hãy lưu ý rằng không có quy trình đánh giá đi kèm.

Cách cài đặt một gói R

Có vài lựa chọn khác nhau khi cài đặt gói R.

Cài gói R từ CRAN

Cách phổ biến nhất là cài gói từ CRAN. Bạn chỉ cần tên gói và gọi install.packages("package"). Với các gói được lưu trữ nơi khác (Bioconductor, GitHub), phương thức cài đặt khác nhau—tôi sẽ trình bày từng cái bên dưới.

Ví dụ, gói lâu đời nhất phát hành trên CRAN và vẫn trực tuyến, được cập nhật là gói vioplot của Daniel Adler.

Ngày phát hành ban đầu nằm trong tệp DESCRIPTION của gói.

Để cài từ CRAN, bạn sẽ dùng:

install.packages("vioplot")

Sau khi chạy, R sẽ in các thông báo về nguồn tải, tiến trình cài đặt và việc cài đặt có thành công hay không. Dưới đây là ví dụ rút gọn bạn có thể thấy:

Installing package into '/home/username/R/x86_64-pc-linux-gnu-library/4.6'
(as 'lib' is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/vioplot_0.4.0.tar.gz'
...
* DONE (vioplot)

Kết quả cho bạn biết gói được cài ở đâu, tải từ đâu và cài đặt có thành công hay không. Tùy hệ điều hành mà các thông báo này có thể khác nhau.

Cuối cùng, để cài nhiều gói R cùng lúc, chỉ cần liệt kê chúng thành một vector ký tự ở đối số thứ nhất của hàm install.packages():

install.packages(c("vioplot", "MASS"))

Cài đặt từ các máy chủ phản chiếu của CRAN

Hãy nhớ rằng CRAN là một mạng lưới máy chủ (mỗi máy chủ gọi là “mirror”), vì vậy bạn có thể chỉ định máy chủ muốn dùng. Nếu bạn dùng R qua giao diện RGui, bạn có thể chọn từ danh sách hiện ra ngay sau khi dùng lệnh install.packages(). Trên RStudio, máy chủ phản chiếu đã được chọn mặc định.

Bạn cũng có thể chọn máy chủ phản chiếu bằng chooseCRANmirror(), hoặc trực tiếp trong hàm install.packages() thông qua tham số repo. Bạn có thể xem danh sách các mirror khả dụng với getCRANmirrors() hoặc trực tiếp trên trang mirrors của CRAN.

Ví dụ: để dùng mirror của Thư viện Đại học Ghent (Bỉ) để cài gói vioplot, bạn có thể chạy:

install.packages("vioplot", repos = "https://lib.ugent.be/CRAN")

Cài gói Bioconductor

Các gói Bioconductor được cài thông qua gói BiocManager. Trước tiên, cài BiocManager từ CRAN:

install.packages("BiocManager")

Sau đó cài các gói Bioconductor theo tên:

BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))

Để cài hoặc cập nhật toàn bộ các gói cốt lõi của Bioconductor, gọi BiocManager::install() không kèm đối số. Bản phát hành hiện tại là Bioconductor 3.23, yêu cầu R 4.6.0. Xem hướng dẫn cài đặt chính thức để biết chi tiết.

Cài gói qua devtools

Như bạn đã đọc ở trên, mỗi kho có cách cài gói riêng, nên nếu bạn thường xuyên dùng gói từ nhiều nguồn khác nhau, hành vi này có thể hơi bất tiện. Một cách hiệu quả hơn là dùng gói devtools để đơn giản hóa quy trình vì nó có các hàm riêng cho từng kho, bao gồm cả CRAN.

Bạn có thể cài devtools như thường lệ với install.packages("devtools"), nhưng bạn cũng có thể cần cài Rtools trên Windows, công cụ dòng lệnh Xcode trên Mac, hoặc r-base-dev và r-devel trên Linux.

Sau khi cài devtools, bạn sẽ có thể dùng các hàm tiện ích để cài các gói khác. Các lựa chọn gồm:

  • install_bioc() từ Bioconductor,

  • install_bitbucket() từ Bitbucket,

  • install_cran() từ CRAN,

  • install_git() từ một kho git,

  • install_github() từ GitHub,

  • install_local() từ tệp cục bộ,

  • install_svn() từ một kho SVN,

  • install_url() từ một URL, và

  • install_version() từ một phiên bản cụ thể của gói CRAN.

Ví dụ, để cài gói babynames từ kho GitHub của nó, bạn có thể dùng:

devtools::install_github("hadley/babynames")

Cách cập nhật, gỡ và kiểm tra các gói R đã cài

Khi bạn dùng R nhiều hơn, việc bạn dùng install.packages() vài lần mỗi tuần hoặc thậm chí mỗi ngày là bình thường, và với tốc độ phát triển gói R nhanh như hiện nay, rất có thể sớm muộn bạn sẽ cần cập nhật hoặc thay thế các gói yêu thích. Phần này liệt kê một số hàm giúp bạn quản lý bộ sưu tập gói.

  • Để kiểm tra những gói nào đã được cài trên máy, bạn có thể dùng:
installed.packages()
  • Gỡ cài đặt một gói rất đơn giản với hàm remove.packages(), trong trường hợp này:
remove.packages("vioplot")
  • Kiểm tra những gói nào cần cập nhật:
old.packages()
  • Cập nhật tất cả các gói:
update.packages()
  • Cập nhật một gói cụ thể bằng cách cài lại nó:
install.packages("vioplot")

Quản lý gói với renv

Để quản lý phụ thuộc theo từng dự án, gói renv (duy trì bởi Posit) tạo các môi trường gói cách ly, có thể tái lập—tương tự môi trường ảo của Python.

install.packages("renv")

# Initialize renv in your project
renv::init()

# Take a snapshot of current packages
renv::snapshot()

# Restore packages from the lockfile
renv::restore()

renv ghi lại chính xác phiên bản gói trong tệp renv.lock, vì vậy cộng tác viên có thể tái tạo môi trường của bạn với renv::restore(). Điều này đặc biệt hữu ích cho làm việc nhóm và các dự án dài hạn.

Giao diện người dùng để cài gói R

Nếu bạn thích giao diện đồ họa, cả RStudio và RGui đều có công cụ quản lý gói. Trong RStudio (hiện do Posit phát triển), vào Tools → Install Packages và nhập tên gói trong hộp thoại. Để xem hướng dẫn chi tiết về RStudio, hãy xem hướng dẫn RStudio của chúng tôi.

cài đặt gói

Còn trong RGui, bạn sẽ tìm thấy các tiện ích dưới menu Packages.

rgui

Cách nạp gói

Sau khi gói được cài, bạn đã sẵn sàng dùng các chức năng của nó. Nếu bạn chỉ cần thỉnh thoảng dùng một vài hàm hoặc dữ liệu trong gói, bạn có thể truy cập bằng ký pháp packagename::functionname(). Ví dụ, vì bạn đã cài gói babynames, bạn có thể khám phá một trong các tập dữ liệu của nó.

Để xem gói chứa những hàm và dữ liệu gì, dùng help(package = "babynames").

Để truy cập tập dữ liệu births trong gói babynames, bạn chỉ cần gõ:

babynames::births
## # A tibble: 6 x 2
##    year  births
##   <int>   <int>
## 1  2009 4130665
## 2  2010 3999386
## 3  2011 3953590
## 4  2012 3952841
## 5  2013 3932181
## 6  2014 3988076

Nếu bạn sẽ dùng gói nhiều hơn, có lẽ nên nạp nó vào bộ nhớ. Cách đơn giản nhất là dùng lệnh library().

Lưu ý rằng đầu vào của install.packages() là một vector ký tự và yêu cầu tên đặt trong dấu ngoặc kép, trong khi library() chấp nhận ký tự hoặc tên và cho phép bạn viết tên gói không cần ngoặc kép.

Sau đó, bạn không còn cần ký pháp package::function() nữa, và có thể truy cập trực tiếp các chức năng của nó như các hàm hoặc dữ liệu base R khác:

births
## # A tibble: 6 x 2
##    year  births
##   <int>   <int>
## 1  2009 4130665
## 2  2010 3999386
## 3  2011 3953590
## 4  2012 3952841
## 5  2013 3932181
## 6  2014 3988076

Bạn có thể đã nghe về hàm require(): đúng là có thể nạp gói với hàm này, nhưng điểm khác là nó sẽ không ném lỗi nếu gói chưa được cài.

Vì vậy hãy dùng hàm này cẩn trọng!

Bạn có thể đọc thêm về library() so với require() trong bài viết của Yihui Xie về chủ đề này. Để học các nền tảng R, bao gồm quản lý gói, xem hướng dẫn học R của chúng tôi.

Sự khác nhau giữa Package và Library là gì?

Nói về hàm library(), đôi khi có sự nhầm lẫn giữa package và library, và bạn có thể thấy nhiều người gọi “libraries” thay cho packages.

Xin đừng nhầm lẫn: library() là lệnh dùng để nạp một package, và nó ám chỉ nơi chứa package, thường là một thư mục trên máy tính của bạn, trong khi package là tập hợp các hàm được đóng gói tiện lợi.

Một trích dẫn từ Hadley Wickham, Chief Scientist tại Posit (trước đây là RStudio), và giảng viên khóa Writing Functions in R trên DataCamp, diễn đạt rất hay:

Một cách nhắc lại hữu ích khác về sự khác nhau này là chạy hàm library() không kèm đối số. Nó sẽ cung cấp danh sách các gói được cài trong các thư viện khác nhau trên máy bạn:

library()

Cách nạp nhiều gói R cùng lúc

Khác với install.packages(), library() chỉ nạp một gói mỗi lần gọi. Một cách xử lý phổ biến là lapply():

packages <- c("dplyr", "ggplot2", "tidyr")
lapply(packages, library, character.only = TRUE)

Bạn cũng có thể dùng gói pacman, gói này sẽ cài các gói còn thiếu và nạp chúng trong một bước với p_load().

Cách dỡ nạp một gói R

Để dỡ nạp một gói nhất định, bạn có thể dùng hàm detach(). Cách dùng sẽ là:

detach("package:babynames", unload = TRUE)

Nguồn tài liệu và trợ giúp thay thế

Như bạn đã đọc ở các phần trên, tệp DESCRIPTION chứa thông tin cơ bản về gói, và dù thông tin đó rất hữu ích, nó sẽ không giúp bạn sử dụng gói cho phân tích của mình. Khi đó bạn sẽ cần hai nguồn tài liệu nữa: tệp trợ giúp (help files) và vignettes.

Tệp trợ giúp (Help Files)

Như trong R cơ bản, các lệnh ?() và help() là nguồn tài liệu đầu tiên khi bạn bắt đầu với một gói. Có lẽ bạn còn nhớ bạn có thể có cái nhìn tổng quan về gói bằng cách dùng help(package = "packagename"), nhưng mỗi hàm có thể được khám phá riêng bằng help("tên hàm") hoặc help(function, package = "package") nếu gói chưa được nạp, nơi bạn thường sẽ thấy mô tả về hàm và các tham số cùng ví dụ áp dụng.

Ví dụ, bạn có thể nhớ rằng để lấy tệp trợ giúp của lệnh vioplot trong gói vioplot, bạn có thể gõ:

help(vioplot, package = "vioplot")

Mẹo: bạn cũng có thể dùng cách khác để xem một gói đã nạp có gì bên trong. Dùng lệnh ls() như sau:

library(babynames)
ls("package:babynames")
## [1] "applicants" "babynames"  "births"     "lifetables"

Vignettes

Một nguồn trợ giúp khác rất hữu ích có trong hầu hết các gói là vignettes, là những tài liệu trong đó tác giả trình bày chi tiết hơn về một số chức năng của gói. Theo các vignette là cách tuyệt vời để thực hành các cách dùng phổ biến của gói, vì vậy đây là cách hoàn hảo để bắt đầu làm việc với gói trước khi bạn thực hiện phân tích của riêng mình.

Như bạn có thể nhớ, thông tin về các vignette chứa trong một gói cũng có trong tệp DOCUMENTATION cục bộ hoặc trực tuyến, nhưng bạn cũng có thể lấy danh sách vignette có trong các gói đã cài bằng hàm browseVignettes(), và với một gói cụ thể, chỉ cần đưa tên gói làm tham số: browseVignettes(package="packagename"). Cả hai trường hợp đều sẽ mở một cửa sổ trình duyệt để bạn dễ dàng khám phá và nhấp vào vignette mong muốn để mở.

Nếu bạn thích ở lại dòng lệnh, lệnh vignette() sẽ hiển thị danh sách các vignette, vignette(package = "packagename") là các vignette có trong một gói cụ thể, và sau khi bạn đã xác định vignette muốn xem, chỉ cần dùng lệnh vignette("vignettename").

Ví dụ, một trong những gói phổ biến nhất cho trực quan hóa là ggplot2. Bạn có thể tìm hiểu thêm trong khóa Introduction to Data Visualization with ggplot2 của DataCamp. Có lẽ bạn đã cài nó rồi, nếu chưa, đây là cơ hội để cài và thử kỹ năng install.packages() mới của bạn.

Giả sử bạn đã cài ggplot2, bạn có thể kiểm tra có những vignette nào đi kèm:

vignette(package = "ggplot2")

Có hai vignette cho ggplot2, “ggplot2-specs” và “extending-ggplot2”. Bạn có thể xem cái đầu tiên với:

vignette("ggplot2-specs")

Trên RStudio, nội dung sẽ hiển thị trong thẻ Help bên phải, còn trong RGui hoặc dòng lệnh sẽ mở cửa sổ trình duyệt với vignette.

Bạn có thể tìm thêm các lựa chọn nhận trợ giúp từ R trên trang R-Project.

Cách chọn đúng gói R

Đến đây, bạn đã có thể cài và tận dụng tối đa các gói R, nhưng vẫn còn một câu hỏi cuối: bạn tìm gói mình cần ở đâu?

Cách khám phá gói điển hình là thông qua việc học R. Trong nhiều hướng dẫn và khóa học, các gói phổ biến thường được nhắc đến. Chẳng hạn, khóa Cleaning Data in R đề cập sâu về tidyr.

Với mỗi chủ đề bạn muốn thực hiện trong R, có lẽ đều có một gói thú vị để bạn tìm thấy.

Nhưng nếu bạn có một vấn đề cụ thể và không biết bắt đầu từ đâu, ví dụ như tôi đã nêu ở phần mở đầu, nếu bạn muốn phân tích một số văn bản tiếng Hàn thì sao?

Hoặc nếu bạn muốn thu thập dữ liệu thời tiết? Hoặc ước tính bốc thoát hơi nước?

Bạn đã xem qua một số kho, và đúng là bạn có thể kiểm tra danh sách gói CRAN, nhưng với hơn 21.000 lựa chọn, rất dễ lạc lối.

Hãy xem một vài lựa chọn khác!

CRAN Task View

Một lựa chọn là duyệt theo danh mục các gói CRAN, nhờ CRAN task views. Đúng vậy! CRAN, kho chính thức, cũng cho bạn tùy chọn duyệt qua các gói. Task view về cơ bản là các chủ đề hoặc danh mục nhóm các gói theo chức năng.

Như bạn thấy bên dưới, tất cả các gói liên quan đến di truyền sẽ được phân vào task view "Genetics": 

hướng dẫn gói RLấy ví dụ về văn bản tiếng Hàn, bạn có thể dễ dàng tìm gói mình cần bằng cách điều hướng đến task view Natural Language Processing. Ở đó, bạn có thể đọc nội dung để tìm gói xử lý được văn bản của bạn, hoặc đơn giản dùng CTRL+F và gõ từ khóa bạn đang tìm. 

RDocumentation và R-Universe

RDocumentation tổng hợp tài liệu gói từ CRAN, Bioconductor và GitHub vào một giao diện tìm kiếm duy nhất. Nó xếp hạng kết quả theo mức độ phổ biến tải xuống, vì vậy các gói được dùng rộng rãi sẽ hiện trước.

R-Universe là lựa chọn mới hơn cung cấp trang gói với trạng thái build, tài liệu và thông tin phụ thuộc. Cả hai đều miễn phí và đáng để đánh dấu trang.

Những điều cuối

Các gói R là xương sống của hệ sinh thái R. Dù bạn cài từ CRAN, Bioconductor hay GitHub, quy trình cốt lõi là giống nhau: cài một lần với install.packages() hoặc BiocManager::install(), rồi nạp theo từng phiên với library().

Tôi không đề cập cách tự tạo gói ở đây. Nếu đó là bước tiếp theo của bạn, cuốn R Packages của Hadley Wickham là tài nguyên chuẩn mực, và khóa Developing R Packages của DataCamp hướng dẫn thực hành toàn bộ quy trình.

Nếu bạn muốn củng cố nền tảng R một cách toàn diện hơn, tôi khuyên bắt đầu với khóa Introduction to R hoặc khám phá toàn bộ danh mục khóa học R.

Chủ đề
R
Khoa học Dữ liệu

Khóa học R nổi bật

Khóa học

Nhập môn Ngôn ngữ lập trình R

4 giờ
3.1M
Nắm vững kiến thức cơ bản về phân tích dữ liệu trong R, gồm vectors, lists và data frames; luyện tập R với các data set thực tế.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm