Menu

R là gì? Ngôn ngữ lập trình cho dữ liệu và thống kê

Ngôn ngữ lập trình R là gì, ra đời từ đâu, dùng để làm gì và so với Python ra sao, kèm đoạn code R đầu tiên bạn có thể chạy ngay.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

R là gì?

R là một ngôn ngữ lập trình được tạo ra cho một việc: làm việc với dữ liệu. Thống kê, phân tích dữ liệu và trực quan hóa dữ liệu không phải là thứ bạn gắn thêm vào R bằng thư viện (library): chúng chính là ngôn ngữ. Trung bình, mô hình, biểu đồ và phân phối xác suất đều có sẵn, và cú pháp được định hình quanh câu hỏi mà người làm dữ liệu thực sự đặt ra: "đây là một cột số, hãy cho tôi biết điều gì đó về nó".

Sự tập trung đó là toàn bộ cá tính của R. Một ngôn ngữ đa năng như Java bắt bạn xây dựng từ những thành phần cơ bản nhất. R đưa cho bạn kiểm định t chỉ trong một dòng.

Đây là R đang làm đúng việc nó sinh ra để làm, hãy chạy thử:

Ba thống kê, ba dòng, không cần import. c() tạo một vector các giá trị, còn mean(), sd() và max() có sẵn trong ngôn ngữ. Đó là trải nghiệm R thu nhỏ.

Lịch sử ngắn gọn

R phát triển từ S, một ngôn ngữ thống kê được tạo ra tại Bell Labs vào những năm 1970. Giữa những năm 1990, hai nhà thống kê tại Đại học Auckland là Ross Ihaka và Robert Gentleman xây dựng một bản cài đặt miễn phí, mã nguồn mở theo các ý tưởng của S và đặt tên là R, chơi chữ với chữ cái đầu trong tên của cả hai và với chữ S mà nó kế thừa.

R 1.0 ra mắt năm 2000, và ngôn ngữ được R Core Team duy trì từ đó đến nay. Vì R miễn phí trong khi những người tiền nhiệm thương mại của nó thì không, R lan rộng qua các trường đại học và phòng nghiên cứu trước tiên, và gốc gác học thuật đó vẫn còn thấy rõ: khi các nhà thống kê phát minh một phương pháp mới, package R cài đặt phương pháp đó thường xuất hiện trước mọi thứ khác.

R dùng để làm gì

  • Thống kê và phân tích dữ liệu. Mục đích cốt lõi. Thống kê mô tả, kiểm định giả thuyết, hồi quy, chuỗi thời gian, tất cả đều được hỗ trợ hạng nhất.
  • Trực quan hóa dữ liệu. Base R vẽ biểu đồ bằng một lệnh gọi hàm, và package ggplot2 được nhiều người coi là thư viện vẽ biểu đồ tốt nhất ở bất kỳ ngôn ngữ nào.
  • Khoa học dữ liệu. Bộ package "tidyverse" (dplyr, tidyr, readr) khiến việc làm sạch và định hình lại dữ liệu lộn xộn trở nên dễ chịu hiếm thấy.
  • Tin sinh học. Dự án Bioconductor, với hàng nghìn package R cho bộ gen học, biến R thành ngôn ngữ mặc định trong phần lớn ngành sinh học.
  • Học thuật và nghiên cứu. Kinh tế học, tâm lý học, dịch tễ học, sinh thái học: nếu một lĩnh vực xuất bản bài báo có p-value, nhiều khả năng nghiên cứu sinh của lĩnh vực đó đang viết R.
  • Báo cáo. R Markdown và Quarto biến code phân tích thành báo cáo, slide và dashboard chỉn chu.

Vì sao mọi người thích R

Mọi thứ đều là vector. Các phép toán trong R tự nhiên áp dụng cho cả tập giá trị cùng lúc: prices * 1.2 tăng mọi mức giá thêm 20%, không cần vòng lặp. Khi bạn đã hiểu điều này, code xử lý dữ liệu ngắn đi đáng kể. Bạn sẽ thấy nó ở khắp nơi khi đến bài vector.

Thống kê có sẵn. Sinh số ngẫu nhiên, phân phối, kiểm định thống kê và mô hình tuyến tính đều nằm trong base R. Ở hầu hết các ngôn ngữ, đó là những thư viện bên thứ ba; trong R, chúng cứ thế có sẵn.

CRAN. Comprehensive R Archive Network lưu trữ hơn 20.000 package được tuyển chọn, và package nào cũng phải vượt qua các bước kiểm tra tự động trước khi được xuất bản. Dù lĩnh vực của bạn dùng phương pháp ngách đến đâu, cũng đã có người đóng gói nó.

Vẽ biểu đồ mà không tốn thời gian. hist(scores) cho bạn một histogram. Một lệnh gọi. Phân tích khám phá (nhìn dữ liệu, điều chỉnh, nhìn lại) chính là điều R được tối ưu cho.

R và Python: phiên bản thẳng thắn

Đây là câu hỏi người mới nào cũng hỏi, nên đây là câu trả lời không thiên vị phe nào.

Python là ngôn ngữ đa năng rất giỏi về dữ liệu. Nó thắng khi phần việc dữ liệu chỉ là một phần của một hệ thống lớn hơn: một ứng dụng web, một pipeline machine learning chạy thật, phần code kết nối tự động hóa. Nó gắn với nhiều việc làm hơn, và một ngôn ngữ bao quát được nhiều mảng hơn.

R là ngôn ngữ dữ liệu xuất sắc về thống kê. Nó thắng khi công việc chính là phân tích: khám phá bộ dữ liệu, khớp mô hình thống kê, tạo đồ họa và báo cáo đạt chất lượng xuất bản. Hệ sinh thái thống kê của nó sâu hơn, và các phương pháp mới nhất xuất hiện trên R trước tiên.

Không bên nào "tốt hơn": chúng hướng tới những trọng tâm khác nhau. Nếu bạn làm nghiên cứu, thống kê sinh học hay các vị trí nặng về phân tích, hãy bắt đầu với R. Nếu bạn nhắm tới kỹ thuật phần mềm có yếu tố dữ liệu, hãy bắt đầu với Python. Và bí mật mà các cuộc tranh cãi trên mạng bỏ qua: ngôn ngữ thứ hai chỉ tốn một phần nhỏ công sức khi bạn đã học xong ngôn ngữ đầu tiên, và rất nhiều người làm nghề dùng cả hai trong cùng một tuần.

Thử ngay bây giờ

Bạn không cần cài đặt gì để bắt đầu: các khối code trong những trang này đều chạy được trực tiếp. Đây là một ví dụ lớn hơn một chút: mô phỏng việc tung xúc xắc và tóm tắt kết quả.

sample() mô phỏng 100 lần tung một con xúc xắc, và table() đếm số lần mỗi mặt xuất hiện: một bảng tần suất chỉ trong một lệnh gọi. Đổi 100 thành 10000 rồi chạy lại; giá trị trung bình nhích dần về 3,5, đúng như xác suất nói. Vòng lặp đó (câu hỏi, code, câu trả lời, chỉnh sửa) chính là cảm giác khi làm việc với R.

Khi bạn sẵn sàng chạy R trên máy của mình, bước tiếp theo là cài đặt R và RStudio.

Điều cần nhớ

  • R là ngôn ngữ miễn phí, mã nguồn mở, được tạo ra chuyên cho thống kê, phân tích dữ liệu và trực quan hóa.
  • Nó kế thừa từ S, được Ross Ihaka và Robert Gentleman tạo ra giữa những năm 1990; R 1.0 ra mắt năm 2000.
  • Thế mạnh của nó: phép toán vector hóa, thống kê có sẵn, hơn 20.000 package trên CRAN và khả năng vẽ biểu đồ hàng đầu.
  • R và Python không phải là một cuộc chiến: R sâu hơn về thống kê, Python rộng hơn về kỹ thuật, và nhiều người dùng cả hai.

Tiếp theo: cài đặt R (và RStudio) trên máy của bạn.

Câu hỏi thường gặp

Lập trình R dùng để làm gì?

R được dùng cho thống kê, phân tích dữ liệu và trực quan hóa dữ liệu. Nó chiếm ưu thế trong nghiên cứu học thuật, thống kê sinh học và tin sinh học, dịch tễ học, và mọi lĩnh vực mà công việc là 'phân tích bộ dữ liệu này rồi tạo biểu đồ và mô hình'. R ít được dùng để xây ứng dụng hay trang web: nó không được thiết kế cho việc đó.

R có khó học không?

Với công việc dữ liệu, R là một trong những ngôn ngữ dễ bắt đầu hơn cả. Nạp một bộ dữ liệu, tính các thống kê tóm tắt và vẽ một biểu đồ, mỗi việc chỉ mất một dòng. Điều khiến người học vấp sau này là sự linh hoạt của R, có nhiều cách làm cùng một việc, vì thế học sớm các quy ước hiện đại sẽ rất đáng.

Nên học R hay Python?

Nếu công việc của bạn lấy thống kê làm trọng tâm (nghiên cứu, thống kê sinh học, kinh tế lượng, báo cáo), R đưa bạn đi xa hơn và nhanh hơn. Nếu bạn muốn một ngôn ngữ đa năng cho dữ liệu cùng với viết script, backend web hay kỹ thuật machine learning, hãy chọn Python. Nhiều người làm dữ liệu chuyên nghiệp cuối cùng dùng cả hai: các khái niệm chuyển đổi qua lại được.

R có miễn phí không?

Có. R miễn phí và mã nguồn mở, phát hành theo giấy phép GPL. Bạn tải nó từ CRAN không mất phí, và hàng nghìn package trên CRAN cũng miễn phí.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu