✨R (ngôn ngữ lập trình)

R (ngôn ngữ lập trình)

R là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa khối từ vựng lấy cảm hứng từ Scheme. R do Ross Ihaka và Robert Gentleman tạo ra tại Đại học Auckland, New Zealand, đến nay do R Development Core Team chịu trách nhiệm phát triển. Tên của ngôn ngữ một phần lấy từ chữ cái đầu của hai tác giả (Robert Gentleman và Ross Ihaka), một phần cũng là cách chơi chữ từ tên S.

Ngôn ngữ R đã trở thành một tiêu chuẩn trên thực tế (de facto) giữa các nhà thống kê cho thấy sự phát triển của phần mềm thống kê, và được sử dụng rộng rãi để phát triển phần mềm thống kê và phân tích dữ liệu. Mã nguồn của nó được công bố tự do theo Giấy phép Công cộng GNU, và có các phiên bản dịch sẵn cho nhiều hệ điều hành khác nhau. R sử dụng giao diện dòng lệnh, tuy cũng có một vài giao diện đồ họa người dùng dành cho nó.

Tính năng

R có chứa nhiều loại kỹ thuật thống kê (mô hình hóa tuyến tính và phi tuyến, kiểm thử thống kê cổ điển, phân tích chuỗi thời gian, phân loại, phân nhóm,...) và đồ họa. R, giống như S, được thiết kế xoay quanh một ngôn ngữ máy thực thụ, và nó cho phép người dùng thêm các tính năng bổ sung bằng cách định nghĩa các hàm mới. Cũng có một số khác biệt quan trọng đối với S, nhưng nhiều mã viết bằng S vẫn chạy được mà không cần thay đổi. Nhiều hệ thống trong R được viết bằng chính ngôn ngữ của nó, giúp cho người dùng dễ theo dõi các giải thuật. Để thực hiện công việc chuyên về tính toán, R có thể liên kết được với ngôn ngữ C, C++ và Fortran để có thể được gọi trong khi chạy. Người dùng thông thạo có thể viết mã C để xử lý trực tiếp các đối tượng của R.

R cũng có tính mở rộng cao bằng cách sử dụng các gói cho người dùng đưa lên cho một số chức năng và lĩnh vực nghiên cứu cụ thể. Do được thừa hưởng từ S, R có nền tảng lập trình hướng đối tượng mạnh hơn đa số các ngôn ngữ tính toán thống kê khác. Việc mở rộng R cũng dễ dàng nhờ các luật đóng khối từ vựng.

Một điểm mạnh khác của R là nền tảng đồ họa của nó, có thể tạo ra những đồ thị chất lượng cao cùng các biểu tượng toán học. R cũng có đinh dạng văn bản riêng tương tự như LaTeX, dùng để cung cấp tài liệu hướng dẫn toàn diện, có trực tuyến ở các định dạng khác nhau và cả bản in.

Dù R được dùng chủ yếu bởi những nhà thống kê và những người sử dụng khác đòi hỏi một môi trường tính toán thống kê và phát triển phần mềm, nó cũng có thể dùng làm một công cụ tính toán ma trận tổng quát với các kết quả đo đạc cạnh tranh so với GNU Octave và đối thủ thương mại của nó, MATLAB. Giao diện RWeka đã được thêm vào phần mềm khai phá dữ liệu phổ biến Weka, cho phép đọc/ghi định dạng arff vì vậy cho phép sử dụng tính năng khai phá dữ liệu trong Weka và thống kê trong R.

Ví dụ

Các ví dụ sau minh họa cho cú pháp cơ bản của ngôn ngữ và cách dùng giao diện dòng lệnh. Đồ thị dự đoán do hàm plot.lm() tạo ra. Các tính năng có thể thấy là các ký hiệu toán học ở các tên trục, ở phía dưới bên trái.

> x <- c(1,2,3,4,5,6) # Tạo tập hợp có thứ tự > y <- x^2 # Bình phương các phần tử trong x > mean(y) # Tính trung bình số hoc của y [1] 15.16667 > var(y) # Tính phương sai mẫu [1] 178.9667 > summary(lm(y ~ x)) # Ước lượng mô hình hồi quy tuyến tính

Call: lm(formula = y ~ x)

Residuals: 1 2 3 4 5 6 3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -9.3333 2.8441 -3.282 0.030453 * x 7.0000 0.7303 9.585 0.000662 ***

Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.055 on 4 degrees of freedom Multiple R-squared: 0.9583, Adjusted R-squared: 0.9478 F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662

par(mfrow=c(2, 2)) # Gọi đồ thị kích thước 2x2 plot(lm(y ~ x)) # Vẽ đồ thị dự đoán của mô hình hồi quy

Các mốc quan trọng

Một số mốc quan trọng trong quá trình phát triển.

  • Phiên bản 0.16 – Đây là bản alpha cuối cùng do Ihaka và Gentleman phát triển. Đa số các tính năng cơ bản trong "Sách Trắng" đã được hiện thực. Danh sách gửi thư bắt đầu vào ngày 1 tháng 4 năm 1997.
  • Phiên bản 0.49 – 23 tháng 4 năm 1997 – Đây là bản phát hành mã nguồn cũ nhất, và dịch trên một số hệ điều hành tương tự Unix. CRAN được bắt đầu vào ngày này, với 3 trang gương ban đầu chứa 12 gói. Phiên bản alpha của R dành cho Microsoft Windows và Mac OS đã được đưa lên một thời gian ngắn sau phiên bản này.
  • Phiên bản 0.60 – 5 tháng 12 năm 1997 – R trở thành một phần chính thức của Dự án GNU. Mã nguồn được lưu giữ và bảo trì trên CVS.
  • Phiên bản 1.0.0 – 29 tháng 2 năm 2000 – Được các nhà phát triển xem là đủ ổn định để sử dụng đại trà.
  • Phiên bản 1.4.0 – Các phương thức S4 được giới thiệu và phiên bản đầu tiên dành cho Mac OS X được phát hành ngay sau đó.
  • Phiên bản 2.0.0 – Giới thiệu lazy loading, cho phép tải nhanh dữ liệu mà ít tốn bộ nhớ.
  • Phiên bản 2.1.0 – Hỗ trợ mã hóa UTF-8, và bắt đầu quốc tế hóa và bản địa hóa cho các ngôn ngữ khác nhau.
  • Phiên bản 2.9.0 – Gói 'Matrix' giờ là gói đề nghị chứa trong bản phân phối R cơ bản.

Giao diện

Giao diện đồ họa

  • R Studio - Môi trường phát triển tích hợp đa nền tảng, (có thể chạy trên một máy linux từ xa)
  • Deducer - Giao diện hướng - menu
  • Java GUI for R ( JGR) - trình biên tập và terminal R viết trên Java
  • Rattle GUI - giao diện dựa trên RGtk2, thiết kế riêng cho Khai thác dữ liệu
  • R Commander
  • Revolution Analytics -
  • RGUI
  • RKWard
  • RWeka - hỗ trợ tính năng khai thác dữ liệu trong Weka và phân tích thống kê trong R
👁️ 3 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
Mục đích của **danh sách các ngôn ngữ lập trình** này là bao gồm tất cả các ngôn ngữ lập trình hiện tại đáng chú ý, được sử dụng hiện tại và những ngôn ngữ
nhỏ|Mô hình ngôn ngữ máy được lập nên bởi nhà toán học, nhà thủy văn và lập trình viên Vladimir Mikhailovich Kazakov, nhân viên Máy tính của Viện Energosetproekt năm 1962-1972. **Ngôn ngữ máy** (còn
Trong khoa học máy tính, **lập trình mảng** (tiếng Anh: _array programming_) là giải pháp cho phép áp dụng chương trình hoạt động lên toàn bộ tập các giá trị cùng một lúc. Các giải
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
Trong lập trình máy tính, **Hợp ngữ** (hay **assembly**) thường được viết tắt là **asm** là bất kỳ ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh
**Lập trình dựa trên nguyên mẫu** (tiếng Anh: **prototype-based programming**) là một kiểu lập trình hướng đối tượng, trong đó việc tái sử dụng hành vi (được gọi là kế thừa) được thực hiện thông
**Ngôn ngữ trung gian chung **hoặc **Ngôn ngữ trung gian dùng chung** (**Common Intermediate Language - CLI**), là ngôn ngữ lập trình có thể đọc được của con người ở mức thấp nhất được xác
Trong khoa học máy tính, **lập trình ràng buộc** (tiếng Anh: _constraint programming_) là một mẫu hình lập trình trong đó mối quan hệ giữa các biến được mô tả ở dạng các ràng buộc.
**C++11**, được biết đến trước đây với tên gọi C++0x, là tên gọi của tiêu chuẩn của ngôn ngữ lập trình C++. Tiêu chuẩn này được chấp nhận bởi tổ chức ISO vào ngày 12
**Cú pháp ngôn ngữ C++** là tập hợp các quy tắc nhằm xác định cách thức viết và dịch trong ngôn ngữ lập trình C++. Vì C++ là ngôn ngữ được thiết kế
**Ngôn ngữ** là một hệ thống giao tiếp có cấu trúc được sử dụng bởi con người. Cấu trúc của ngôn ngữ được gọi là ngữ pháp, còn các thành phần tự do của nó
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
**_The C Programming Language_** là một cuốn sách hướng dẫn lập trình ngôn ngữ C, tác giả Brian Kernighan và Dennis Ritchie, những người sau này đã thiết kế và triển khai ngôn ngữ này
Ngôn ngữ lập trình C có một hệ thống mở rộng cho việc **khai báo các biến của các kiểu khác nhau**. Những quy tắc dành cho các kiểu phức tạp có thể gây nhầm
**Tuyên ngôn độc lập của Hoa Kỳ** là tuyên bố được thông qua bởi cuộc họp của Đệ nhị Quốc hội Lục địa tại Tòa nhà bang Pennsylvania (nay là Independence Hall) ở Philadelphia, Pennsylvania
**Microsoft Windows Logo** (viết tắt: **MSWLogo** hay ****) là một ngôn ngữ lập trình dựa trên ngôn ngữ Logo, với Front- End GUI. Nó được phát triển bởi George Mills tại Viện Công nghệ Massachusetts
**Lua** là một ngôn ngữ lập trình thông dịch với đặc điểm nhỏ gọn, đa nền tảng. Lua được phát triển từ C và hệ thống các API theo hướng đơn giản hóa. ## Lịch
thumb|thumbtime=5|_Preservation of the Sign Language_ (1913) nhỏ|Juan Pablo Bonet, _Reducción de las letras y arte para enseñar a hablar a los mudos_ (Madrid, 1620). **Ngôn ngữ ký hiệu** hay **ngôn ngữ dấu hiệu**, **thủ ngữ**
Đây là danh sách các thuật ngữ tìm thấy trong lập trình hướng đối tượng. Một số có liên quan đến lập trình hướng đối tượng và một số thì không. Lưu ý rằng, các
**Gofer** ("**Go**od **F**or **E**quational **R**easoning") là một trong các phần mềm được phát triển từ ngôn ngữ lập trình Haskell. Ngôn ngữ được sử dụng cho các mục đích giáo dục và hỗ trợ một
Sir **Charles Antony Richard Hoare** (**Tony Hoare** hay **C.A.R. Hoare**, sinh ngày 11 tháng 1 năm 1934) là một nhà khoa học máy tính người Anh, có lẽ nổi tiếng nhất vì đã phát triển
**Bệnh lý ngôn ngữ nói** là một lĩnh vực chuyên môn được bác sĩ lâm sàng được gọi là **nhà nghiên cứu bệnh học về ngôn ngữ lời nói** (**speech-language pathologist -** **SLP**) hoặc một
**Nhóm ngôn ngữ Thái (Tai)** (còn gọi là **Nhóm ngôn ngữ Tráng-Thái**) là một Nhóm ngôn ngữ thuộc ngữ hệ Tai-Kadai. Nhóm ngôn ngữ này bao gồm các ngôn ngữ như tiếng Tráng, tiếng Bố
**Brian Wilson Kernighan** (; sinh ngày 1 tháng 1 năm 1942) Ông là tác giả của nhiều chương trình Unix, bao gồm cả ditroff. Kernighan là đồng tác giả của AWK và AMPL ngôn ngữ
Một "trình biên dịch của trình biên dịch" hay "chương trình sinh trình biên dịch" (tiếng Anh: compiler-compiler) là một công cụ tạo ra bộ phân tích cú pháp, trình thông dịch hoặc trình biên
Trang đầu _[[Phép giảng tám ngày_ in năm 1651 của nhà truyền giáo Alexandre de Rhodes. Bên trái là tiếng Latinh, bên phải là tiếng Việt viết bằng chữ Quốc ngữ.]] **Chữ Quốc ngữ** là
**Biểu diễn tri thức và suy luận** (**Knowledge representation and reasoning**, **KRR**, **KR&R**, **KR²**) là lĩnh vực của trí tuệ nhân tạo (AI) tập trung vào việc biểu diễn thông tin về thế giới dưới
Đây là danh sách nguồn gốc các thuật ngữ liên quan đến máy tính (hay **danh sách từ nguyên thuật ngữ máy tính**). Nó có liên quan đến cả phần cứng và phần mềm máy
**SQL** (, hoặc ; viết tắt của **Structured Query Language**), dịch là _Ngôn ngữ truy vấn mang tính cấu trúc_, là một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ
**AutoHotkey** là một ngôn ngữ kịch bản tùy biến miễn phí, nguồn mở cho Microsoft Windows, bàn đầu nhằm cung cấp các phím tắt hay phím nóng dễ dàng, tạo macro nhanh và tự động
Trong các loại phần mềm, **kiểm tra chính tả** (hoặc **kiểm tra đánh vần** hoặc **kiểm tra lỗi chính tả**) là một tính năng phần mềm giúp kiểm tra lỗi chính tả trong một văn
**Ngữ dụng học (pragmatics)** là một chuyên ngành thuộc ngôn ngữ học và tín hiệu học nghiên cứu về sự đóng góp của bối cảnh tới nghĩa. Ngữ dụng học bao hàm cả Lý thuyết
Trong lý thuyết ngôn ngữ hình thức, **chuỗi trống** (empty string) là chuỗi đặc biệt duy nhất có độ dài là 0. ## Lý thuyết hình thức Xét về hình thức, chuỗi là một dãy
**Howard G. "Ward" Cunningham** (sinh ngày 26 tháng 5 năm 1949) là một lập trình viên người Mỹ, có công phát triển wiki đầu tiên và là đồng tác giả của _Tuyên ngôn về phát
Trong khoa học máy tính, **giá trị** (tiếng Anh: _value_) là một biểu thức mà không thể đánh giá thêm được nữa (một dạng chuẩn). Các thành viên của một loại là những giá trị
**John Ronald Reuel Tolkien** (, ; 3 tháng 1 năm 1892 – 2 tháng 9 năm 1973) là một nhà văn, tiểu thuyết gia, và giáo sư người Anh, được công chúng biết đến nhiều
nhỏ|430x430px|BrdU (màu đỏ), thể hiện quá trình neurogenesis trong trung khu dưới hạt (SGZ) của vùng DG hồi hải mã. Hình ảnh minh họa này của Faiz và cộng sự, năm 2005. **Khoa học thần
**Phương ngữ Thanh Hóa** hay **thổ ngữ Thanh Hóa**, **tiếng Thanh Hóa**, **tiếng địa phương Thanh Hóa** là một phương ngữ thuộc vùng phương ngữ Trung của tiếng Việt lưu hành chủ yếu trong phạm
**Phương trình** là một biểu thức toán học có chứa các biến số và các phép toán, trong đó các giá trị của các biến được tìm kiếm để làm cho cả biểu thức trở
**Ngữ hệ Hán-Tạng**, trong một số tư liệu còn gọi là **ngữ hệ Liên Himalaya**, là một ngữ hệ gồm trên 400 ngôn ngữ. Ngữ hệ này đứng thứ hai sau ngữ hệ Ấn-Âu về
**Vim** (; viết tắt của **Vi IMproved**) là một trình soạn thảo văn bản miễn phí và mã nguồn mở. Đó là một bản sao cải tiến của vi của Bill Joy cho Unix. Nó
**CD Baby, Inc.** là cửa hàng âm nhạc trực tuyến chuyên bán các đĩa compact, bản ghi vinyl và các bản nhạc tải về từ các nhạc sĩ tự do. Công ty cũng là nơi
**Phân tích tính toán** (Analytics) là phân tích tính toán có hệ thống của dữ liệu hoặc thống kê. Đây là quá trình phát hiện, giải thích và truyền đạt các mô hình có ý
**Thế giới mở** (tiếng Anh: _open world_) là những video game được thiết kế theo cách mà người chơi có thể đi lại tự do trong một thế giới ảo và khá tự do trong