Bắt đầu ngayBắt đầu miễn phí

Tùy chọn cho khối mã R

Bạn đã được giới thiệu một số tùy chọn cho khối mã R trong video. Các khối mã R cũng có thể được đặt tên. Điều này rất hữu ích trong các tài liệu lớn, đặc biệt nếu có lỗi bên trong một khối. Khi knit tài liệu trong RStudio, ví dụ, lỗi có thể được xác định vị trí dễ dàng hơn. Một số khối trong báo cáo của bạn đã được đặt tên để bạn nắm được ý tưởng này. Tùy chọn của khối được thêm sau tên khối và một dấu phẩy, như sau: {r name, option = value}

Có lẽ những tùy chọn được dùng nhiều nhất là các tùy chọn điều khiển cách hiển thị đầu ra. Mặc định, toàn bộ đầu ra đều được hiển thị trong tài liệu RMarkdown, tức là cả messages, warnings và errors. Bằng cách chỉ định các tùy chọn như echo = FALSE, bạn có thể ẩn phần mã R khỏi hiển thị, trong khi mã vẫn được thực thi. Hãy xem lại video để biết thêm các tùy chọn hiển thị khác.

Hãy nhớ đặt dấu phẩy giữa tên khối và các tùy chọn của khối để tránh làm treo phiên làm việc của bạn.

Bài tập này là một phần của khóa học

Truyền đạt bằng Dữ liệu trong Tidyverse

Xem khóa học

Hướng dẫn bài tập

  • dòng 14, hãy tắt các thông báo trong khối mã R đầu tiên bằng tùy chọn message, để phần đầu ra đôi khi xuất hiện khi nạp gói sẽ không được hiển thị.
  • dòng 64, khối defining_a_theme làm phong phú báo cáo của bạn với một biểu đồ tùy chỉnh, tuy nhiên phần mã đằng sau không quá quan trọng với người đọc báo cáo.
    • Ẩn toàn bộ phần mã, nhưng vẫn để R thực thi nó (nếu bạn không nhớ tùy chọn khối, hãy xem lại video).

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

{"my_document.Rmd":"---\ntitle: \"The reduction in weekly working hours in Europe\" \nsubtitle: \"Looking at the development between 1996 and 2006\"\nauthor: \"Insert your name here\"\noutput: html_document\n---\n\n## Summary \n\nThe **International Labour Organization (ILO)** has many [data sets](http://www.ilo.org/global/statistics-and-databases/lang--en/index.htm) on working conditions. For example, one can look at how weekly working hours have been decreasing in many countries of the world, while monetary compensation has risen. In this report, *the reduction in weekly working hours* in European countries is analysed, and a comparison between 1996 and 2006 is made. All analysed countries have seen a decrease in weekly working hours since 1996 – some more than others.\n\n## Preparations \n\n```{r loading_packages}\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(forcats)\n```\n\n## Analysis\n\n### Data\n\nThe herein used data can be found in the [statistics database of the ILO](http://www.ilo.org/ilostat/faces/wcnav_defaultSelection;ILOSTATCOOKIE=ZOm2Lqrr-OIuzxNGn2_08bNe9AmHQ1kUA6FydqyZJeIudFLb2Yz5!1845546174?_afrLoop=32158017365146&_afrWindowMode=0&_afrWindowId=null#!%40%40%3F_afrWindowId%3Dnull%26_afrLoop%3D32158017365146%26_afrWindowMode%3D0%26_adf.ctrl-state%3D4cwaylvi8_4). For the purpose of this course, it has been slightly preprocessed.\n\n```{r loading_data}\nload(url(\"http://s3.amazonaws.com/assets.datacamp.com/production/course_5807/datasets/ilo_data.RData\"))\n```\n\n```{r generating_summary_statistics}\n# Some summary statistics\nilo_data %>%\n  group_by(year) %>%\n  summarize(mean_hourly_compensation = mean(hourly_compensation),\n            mean_working_hours = mean(working_hours))\n```\n\nAs can be seen from the above table, the average weekly working hours of European countries have been descreasing since 1980.\n\n### Preprocessing\n\nThe data is now filtered so it only contains the years 1996 and 2006 – a good time range for comparison. \n\n```{r}\nilo_data <- ilo_data %>%\n  filter(year == \"1996\" | year == \"2006\")\n  \n# Reorder country factor levels\nilo_data <- ilo_data %>%\n  # Arrange data frame first, so last is always 2006\n  arrange(year) %>%\n  # Use the fct_reorder function inside mutate to reorder countries by working hours in 2006\n  mutate(country = fct_reorder(country,\n                               working_hours,\n                               last))\n```  \n\n### Results\n\nIn the following, a plot that shows the reduction of weekly working hours from 1996 to 2006 in each country is produced.\n\nFirst, a custom theme is defined.\n\n```{r defining_a_theme}\n# Better to define your own function than to always type the same stuff\ntheme_ilo <- function(){\n  theme_minimal() +\n  theme(\n    text = element_text(family = \"Bookman\", color = \"gray25\"),\n    plot.subtitle = element_text(size = 12),\n    plot.caption = element_text(color = \"gray30\"),\n    plot.background = element_rect(fill = \"gray95\"),\n    plot.margin = unit(c(5, 10, 5, 10), units = \"mm\")\n  )\n}\n```  \n\nThen, the plot is produced. \n\n```{r}\n# Compute temporary data set for optimal label placement\nmedian_working_hours <- ilo_data %>%\n  group_by(country) %>%\n  summarize(median_working_hours_per_country = median(working_hours)) %>%\n  ungroup()\n\n# Have a look at the structure of this data set\nstr(median_working_hours)\n\n# Plot\nggplot(ilo_data) +\n  geom_path(aes(x = working_hours, y = country),\n            arrow = arrow(length = unit(1.5, \"mm\"), type = \"closed\")) +\n  # Add labels for values (both 1996 and 2006)\n  geom_text(\n        aes(x = working_hours,\n            y = country,\n            label = round(working_hours, 1),\n            hjust = ifelse(year == \"2006\", 1.4, -0.4)\n          ),\n        # Change the appearance of the text\n        size = 3,\n        family = \"Bookman\",\n        color = \"gray25\"\n   ) +\n  # Add labels for country\n  geom_text(data = median_working_hours,\n            aes(y = country,\n                x = median_working_hours_per_country,\n                label = country),\n            vjust = 2,\n            family = \"Bookman\",\n            color = \"gray25\") +\n  # Add titles\n  labs(\n    title = \"People work less in 2006 compared to 1996\",\n    subtitle = \"Working hours in European countries, development since 1996\",\n    caption = \"Data source: ILO, 2017\"\n  ) +\n  # Apply your theme \n  theme_ilo() +\n  # Remove axes and grids\n  theme(\n    axis.ticks = element_blank(),\n    axis.title = element_blank(),\n    axis.text = element_blank(),\n    panel.grid = element_blank(),\n    # Also, let's reduce the font size of the subtitle\n    plot.subtitle = element_text(size = 9)\n  ) +\n  # Reset coordinate system\n  coord_cartesian(xlim = c(25, 41))\n```\n\n\n"}
Chỉnh sửa và Chạy Mã