10 tính năng R hữu ích có thể bạn chưa biết

10 tính năng R hữu ích có thể bạn chưa biết

R có đầy đủ các chức năng. Dưới đây tôi sẽ đưa ra mười điều thú vị nhất trong số đó mà nhiều người có thể chưa biết. Bài viết xuất hiện sau khi tôi phát hiện ra rằng những câu chuyện của tôi về một số tính năng của R mà tôi sử dụng trong công việc của mình đã được các lập trình viên đồng nghiệp đón nhận nhiệt tình. Nếu bạn đã biết mọi thứ về điều này thì tôi xin lỗi vì đã lãng phí thời gian của bạn. Đồng thời, nếu bạn có điều gì muốn chia sẻ, hãy giới thiệu điều gì đó hữu ích trong phần bình luận.

Hộp kỹ năng khuyến nghị: khóa học thực hành "Nhà phát triển Python".

Chúng tôi nhắc nhở: cho tất cả độc giả của "Habr" - giảm giá 10 rúp khi đăng ký bất kỳ khóa học Skillbox nào bằng mã khuyến mại "Habr".

chức năng chuyển đổi

Tôi thực sự rất thích switch(). Trên thực tế, đây là cách viết tắt thuận tiện cho câu lệnh if khi chọn một giá trị dựa trên giá trị của một biến khác. Tôi thấy điều này đặc biệt hữu ích khi tôi viết mã cần tải một bộ dữ liệu cụ thể dựa trên lựa chọn trước đó. Ví dụ: nếu bạn có một biến có tên là động vật và bạn muốn chọn một bộ dữ liệu cụ thể tùy thuộc vào việc con vật đó là chó, mèo hay thỏ, hãy viết như sau:

dữ liệu < — read.csv(
công tắc (động vật,
"chó" = "dogdata.csv",
"mèo" = "catdata.csv",
"thỏ" = "rabbitdata.csv")
)

Tính năng này sẽ hữu ích trong các ứng dụng Shiny nơi bạn cần tải các tập dữ liệu hoặc tệp môi trường khác nhau tùy thuộc vào một hoặc nhiều mục menu đầu vào.

Phím nóng cho RStudio

Bản hack này không dành nhiều cho R mà dành cho RStudio IDE. Tuy nhiên, phím nóng luôn rất tiện lợi, giúp bạn tiết kiệm thời gian khi nhập văn bản. Mục yêu thích của tôi là Ctrl+Shift+M cho toán tử %>% và Alt+- cho toán tử <-.

Để xem tất cả các phím nóng, chỉ cần nhấn Alt+Shift+K trong RStudio.

gói bảng điều khiển linh hoạt

Khi bạn cần khởi chạy nhanh bảng điều khiển Shiny của mình, không có gì tốt hơn gói bảng điều khiển. Nó cung cấp khả năng làm việc với các phím tắt HTML, từ đó cho phép bạn tạo các thanh bên, hàng và cột một cách dễ dàng và liền mạch. Ngoài ra còn có khả năng sử dụng thanh tiêu đề, cho phép bạn đặt nó trên các trang khác nhau của ứng dụng, để lại biểu tượng, lối tắt trên Github, địa chỉ email, v.v.

Gói này cho phép bạn làm việc trong khuôn khổ Rmarkdown, do đó bạn có thể đặt tất cả các ứng dụng vào một tệp Rmd ​​và không phân phối chúng trên các máy chủ và tệp giao diện người dùng khác nhau, chẳng hạn như đã làm bằng cách sử dụng Shinydashboard. Tôi sử dụng flexdashboard bất cứ khi nào tôi cần tạo một nguyên mẫu bảng điều khiển đơn giản trước khi làm việc trên một thứ gì đó phức tạp. Tính năng này cho phép bạn tạo nguyên mẫu trong vòng một giờ.

req và xác thực các hàm trong R Shiny

Việc phát triển trong R Shiny có thể gây nhầm lẫn, đặc biệt là khi bạn liên tục nhận được các thông báo lỗi lạ khiến bạn khó hiểu chuyện gì đang xảy ra. Nhưng theo thời gian, Shiny phát triển và hoàn thiện, ngày càng có nhiều chức năng xuất hiện ở đây cho phép bạn tìm hiểu nguyên nhân lỗi. Vì vậy, req() giải quyết vấn đề bằng lỗi "im lặng", khi nhìn chung không rõ chuyện gì đang xảy ra. Nó cho phép bạn hiển thị các thành phần UI được liên kết với các hành động trước đó. Hãy giải thích bằng một ví dụ:

đầu ra$go_button < — sáng bóng::renderUI({

# nút chỉ hiển thị nếu đầu vào động vật đã được chọn

sáng bóng::req(input$animal)

# Nút hiển thị

sáng bóng :: actionButton ("đi",
dán("Tiến hành", input$animal, "phân tích!")
)
})

validation() kiểm tra mọi thứ trước khi hiển thị và cung cấp cho bạn tùy chọn in thông báo lỗi - ví dụ: người dùng đã tải sai tệp lên:

# lấy tập tin đầu vào csv

inFile < — đầu vào$file1
dữ liệu < — inFile$datapath

# chỉ hiển thị bảng nếu đó là chó

sáng bóng::renderTable({
# kiểm tra xem đó có phải là file chó không phải mèo hay thỏ
sáng bóng::xác nhận(
need("Tên con chó" %in% colnames(data)),
“Không tìm thấy cột Tên chó - bạn đã tải đúng tệp chưa?”
)

dữ liệu
})

Thông tin thêm về tất cả các tính năng này có thể được tìm thấy ở đây.

Lưu trữ thông tin đăng nhập của bạn trong môi trường hệ thống

Nếu bạn định chia sẻ mã yêu cầu bạn nhập thông tin xác thực, hãy sử dụng môi trường hệ thống để tránh lưu trữ thông tin xác thực của riêng bạn trên Github hoặc dịch vụ khác. Vị trí ví dụ:

Sys.setenv(
DSN = "tên_cơ sở dữ liệu",
UID = "ID người dùng",
ĐẠT = "Mật khẩu"
)

Bây giờ bạn có thể đăng nhập bằng các biến môi trường:

db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)

Sẽ thuận tiện hơn nữa (đặc biệt nếu bạn sử dụng dữ liệu thường xuyên) để đặt chúng làm biến môi trường trực tiếp trong hệ điều hành. Trong trường hợp này, chúng sẽ luôn có sẵn và bạn sẽ không phải chỉ định chúng trong mã.

Tự động hóa gọn gàng với máy tạo kiểu tóc

Gói styler có thể giúp bạn dọn dẹp mã của mình; nó có nhiều tùy chọn để tự động đưa kiểu mã vào chotidyverse. Tất cả những gì bạn cần làm là chạy styler::style_file() trên tập lệnh có vấn đề của bạn. Gói này sẽ làm được rất nhiều việc (nhưng không phải tất cả) để lập lại trật tự.

Tham số hóa tài liệu R Markdown

Vậy là bạn đã tạo một tài liệu R Markdown tuyệt vời, trong đó bạn phân tích nhiều sự thật khác nhau về loài chó. Và sau đó bạn chợt nhận ra rằng sẽ tốt hơn nếu làm công việc tương tự, nhưng chỉ với mèo. Không vấn đề gì, bạn có thể tự động hóa việc tạo báo cáo về mèo chỉ bằng một lệnh. Để thực hiện việc này, bạn chỉ cần tham số hóa tài liệu đánh dấu R của mình.

Bạn có thể thực hiện việc này bằng cách đặt tham số cho tiêu đề YAML trong tài liệu đã chỉ định, sau đó đặt tham số giá trị.

- tiêu đề: “Phân tích động vật”
tác giả: "Keith McNulty"
ngày: "21 tháng 2019 năm XNUMX"
đầu ra:
html_document:
code_folding: "ẩn"
thông số:
tên_động vật:
giá trị: Con chó
lựa chọn:
-Chó
-Con mèo
- Con thỏ
năm_học:
đầu vào: thanh trượt
tối thiểu: 2000
tối đa: 2019
bước 1
vòng 1
tháng chín: "
value: [2010, 2017] —

Bây giờ bạn có thể đăng ký tất cả các biến trong mã tài liệu dưới dạng params$animal_name và params$year_of_study. Sau đó, chúng ta sẽ sử dụng menu thả xuống Đan (hoặc knit_with_parameters()) và có thể chọn tham số.

10 tính năng R hữu ích có thể bạn chưa biết

tiết lộ

Revealjs là gói cho phép bạn tạo các bản trình bày HTML tuyệt vời với mã R tích hợp, điều hướng trực quan và menu trượt. Phím tắt HTML cho phép bạn nhanh chóng tạo cấu trúc slide lồng nhau với các tùy chọn kiểu dáng khác nhau. Chà, HTML sẽ chạy trên mọi thiết bị, vì vậy bản trình bày có thể được mở trên mọi điện thoại, máy tính bảng hoặc máy tính xách tay. Việc tiết lộ thông tin có thể được định cấu hình bằng cách cài đặt gói và gọi nó trong tiêu đề YAML. Đây là một ví dụ:

- tiêu đề: “Khám phá khía cạnh của vũ trụ phân tích con người”
tác giả: "Keith McNulty"
đầu ra:
tiết lộ::tiết lộjs_trình bày:
trung tâm: vâng
bản mẫu:starwars.html
chủ đề: màu đen
ngày: “Cuộc gặp gỡ HR Analytics London – 18 tháng 2019 năm XNUMX”
tài nguyên_files:
— Darth.png
- deathstar.png
- hanchewy.png
- thiên niên kỷ.png
- r2d2-bapio.png
-starwars.html
—starwars.png
—Stormtrooper.png
-

Mã nguồn trình bày đăng ở đây, và chính cô ấyrpubs.com/keithmcnulty/hr_meetup_london'>trình bày - ở đây.

10 tính năng R hữu ích có thể bạn chưa biết

Thẻ HTML trong R Shiny

Hầu hết các lập trình viên không tận dụng tối đa các thẻ HTML mà R Shiny có. Nhưng đây chỉ là 110 thẻ, giúp bạn có thể tạo lệnh gọi ngắn cho chức năng HTML hoặc phát lại phương tiện. Ví dụ: gần đây tôi đã sử dụng tags$audio để phát âm thanh "chiến thắng" để thông báo cho người dùng khi một nhiệm vụ hoàn thành.

Gói khen ngợi

Việc sử dụng gói này rất đơn giản nhưng cần thể hiện sự khen ngợi đối với người dùng. Nghe có vẻ lạ nhưng họ thực sự thích nó.

10 tính năng R hữu ích có thể bạn chưa biết

Hộp kỹ năng khuyến nghị:

Nguồn: www.habr.com

Thêm một lời nhận xét