> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/texlive/vi/ky-nang/ma-r-knitr.md).

# Mã R (knitr)

Overleaf cung cấp tích hợp với **knitr**, cho phép bạn thêm mã R vào tài liệu LaTeX để tạo đầu ra động.

Các tài liệu chứa mã R phải được lưu với phần mở rộng `.Rtex` hoặc `.Rnw`, nếu không mã sẽ không hoạt động. Hãy xem một ví dụ:

{% code overflow="wrap" %}

```latex
\documentclass{article}
\begin{document}

Bạn có thể gõ các lệnh R trong tài liệu \LaTeX{} của mình; chúng sẽ được xử lý và đầu ra của chúng sẽ được đưa vào tài liệu:

<<>>=
# Tạo một dãy số
X = 2:10

# Hiển thị các thước đo thống kê cơ bản
summary(X)

@
\end{document}
```

{% endcode %}

![KnitrDemo1.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2F4rB1ItV9jgLU4dT6o3Hf%2FKnitrDemo1.png?alt=media\&token=5b2d4df8-8de9-4bdd-be61-0a3992026edf)

[Mở `knitr` ví dụ này trên Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Như bạn thấy, phần văn bản nằm giữa các ký tự `<<>>=` và `@` là mã R. Mã này và đầu ra của nó được in theo định dạng giống danh sách. Khối mã này có thể nhận thêm một số tham số để tùy chỉnh đầu ra động, như được mô tả ở phần tiếp theo.

### Các khối mã

Một khối mã như khối được trình bày ở phần trước thường được gọi là một *khối*. Bạn có thể đặt thêm một số tùy chọn trong các khối knitr. Xem ví dụ dưới đây:

{% code overflow="wrap" %}

```latex
\documentclass{article}
\begin{document}

Bạn có thể gõ các lệnh R trong tài liệu \LaTeX{} của mình; chúng sẽ được xử lý và đầu ra của chúng sẽ được đưa vào tài liệu:

<<echo=FALSE, cache=TRUE>>=
# Tạo một dãy số
X = 2:10

# Hiển thị các thước đo thống kê cơ bản
summary(X)

@
\end{document}
```

{% endcode %}

![KnitrDemo2.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2FHtobrK1TjY4SG4ax2BH5%2FScreenshot%202025-12-16%20143420.png?alt=media\&token=50675660-f20f-44d3-be60-fb91b8dbd255)

[Mở `knitr` ví dụ này trên Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Có hai tùy chọn bổ sung được truyền vào trong `<<` và `>>`.

* `echo=FALSE`Tùy chọn này ẩn mã và chỉ in đầu ra do R tạo ra.
* `cache=TRUE`Nếu cache được đặt thành true, khối sẽ không được chạy, chỉ các đối tượng do nó tạo ra. Điều này giúp tiết kiệm thời gian nếu dữ liệu trong khối đó không thay đổi.

  <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><em>Lưu ý rằng tùy chọn cache=TRUE hiện chưa được hỗ trợ trong Overleaf, nhưng nó sẽ hoạt động cục bộ.</em></p></div>

Xem [hướng dẫn tham khảo](https://learn.overleaf.com/learn/Knitr#Reference_guide) để biết thêm các tùy chọn.

### Các lệnh nội tuyến

Có thể truy cập các đối tượng được tạo trong một khối và in chúng trực tiếp trong dòng.

{% code overflow="wrap" %}

```latex
\documentclass{article}
\begin{document}

Bạn có thể gõ các lệnh R trong tài liệu \LaTeX{} của mình; chúng sẽ được xử lý và đầu ra của chúng sẽ được đưa vào tài liệu:

<<echo=FALSE, cache=TRUE>>=
# Tạo một dãy số
X = 2:10

# Hiển thị các thước đo thống kê cơ bản
summary(X)

@

Vì vậy, giá trị trung bình của dữ liệu là $\Sexpr{mean(X)}$
\end{document}
```

{% endcode %}

![KnitrDemo3.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2Fbyz9VKDCCPcoWHbznSJ4%2FScreenshot%202025-12-16%20143647.png?alt=media\&token=9d5ef4de-f413-4bf2-83c8-bf2171f50dee)

[Mở `knitr` ví dụ này trên Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Lệnh `\Sexpr{mean(X)}` in ra đầu ra do mã R trả về `mean(X)`. Bên trong dấu ngoặc nhọn, có thể truyền bất kỳ lệnh R nào.

### Biểu đồ

Biểu đồ cũng có thể được thêm vào tài liệu knitr, như trong ví dụ này:

{% code overflow="wrap" %}

```latex
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="Biểu đồ đầu tiên">>=

xdata = read.csv(file="data.txt", head=TRUE,sep=" ")

hist(xdata$data, main="Biểu đồ histogram của Overleaf", xlab="Dữ liệu")

@

Hình \ref{fig:plot1} là một biểu đồ histogram đơn giản.

\end{document}
```

{% endcode %}

![KnitrDemo4.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2F5NI4NOJICjnYf8Z2Me1b%2FScreenshot%202025-12-16%20143811.png?alt=media\&token=d937786f-da22-4cbd-9adf-f277ec9f77c4)

[Mở `knitr` ví dụ này trên Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Biểu đồ histogram này sử dụng dữ liệu được lưu trong "data.txt", được lưu trong thư mục làm việc hiện tại. Một vài tùy chọn liên quan đến hình được truyền vào khối.

`plot1`Đây là nhãn được dùng để tham chiếu đến biểu đồ. Tiền tố "fig:" là bắt buộc. Bạn có thể thấy trong ví dụ rằng hình được tham chiếu bằng `\ref{fig:plot1}`.`fig.pos="t"` tham số định vị. Đây là tham số giống như trong [môi trường hình](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment).`fig.height=4, fig.width=4`Chiều rộng và chiều cao của hình.`fig.cap="Biểu đồ đầu tiên"`Chú thích cho hình.

### Các script R bên ngoài

Bạn có thể nhập các phần của một script R bên ngoài vào tài liệu knitr. Điều này rất hữu ích vì việc viết và gỡ lỗi script trong một chương trình bên ngoài trước khi đưa nó vào tài liệu là khá phổ biến.

Giả sử chúng ta có đoạn mã R sau trong một tệp có tên `mycode.R` mà chúng ta đưa vào tài liệu LaTeX của mình:

```r
## ---- myrcode1
# Tạo một dãy số
 X = 2:10

## ---- myrcode2
# Hiển thị các thước đo thống kê cơ bản
summary(X)
```

Lưu ý các dòng:

```r
## ---- myrcode1
```

và

```r
## ---- myrcode2
```

Các dòng này đánh dấu phần bắt đầu của một khối mã và là bắt buộc nếu bạn muốn dùng script này trong tài liệu của chúng ta, như được cho thấy trong đoạn mã sau:

```r
Khối bên dưới sẽ không được in ra

<<echo=FALSE, cache=FALSE>>=
read_chunk("mycode.R")
@

Mã phải xuất hiện ở đây

<<myrcode2>>=

@
```

![KnitrDemo5.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2FPzKSGsFTMdhs9K8dE8Ny%2FKnitrDemo5.png?alt=media\&token=9c32c381-7621-4b7d-9d73-c1e7a0b6aac8)

Khối đầu tiên không được in ra và chỉ được dùng để nhập script bằng lệnh `read_chunk("mycode.R")` . Đó là lý do tùy chọn `echo=FALSE` được đặt. Ngoài ra, các script không được lưu vào bộ nhớ đệm. Sau khi script được nhập, bạn có thể in một khối bằng nhãn bạn đặt sau `## ----`. Trong trường hợp này, đó là `myrcode2`.

Chúng tôi đã đưa tất cả các đoạn mã của bài viết vào một dự án mà [bạn có thể Mở trên Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

### Hướng dẫn tham khảo

Một số tùy chọn của khối:

* `kết quả`. Thay đổi hành vi của các kết quả do mã R tạo ra. Các giá trị có thể là:
  * `markup` Dùng LaTeX để định dạng đầu ra.
  * `asis` In kết quả thô từ R.
  * `hold` Giữ các kết quả đầu ra và đẩy chúng xuống cuối khối.
  * `hide` Ẩn kết quả.
* `echo`. Có bao gồm mã nguồn R hay không. Các tham số khác bao gồm:
  * `echo=2:3` chỉ in dòng thứ hai và thứ ba;
  * `echo=-2:-3` chỉ loại trừ dòng thứ hai và thứ ba.
* `cache`. Có lưu vào bộ nhớ đệm khối mã hay không. Các giá trị có thể là: `TRUE` và `FALSE`
* `highlight`. Có tô sáng mã nguồn hay không. Các giá trị có thể là: `TRUE` và `FALSE`
* `background`. Màu nền của khối. Có thể dùng định dạng rgb và HTML. Giá trị mặc định là *"#F7F7F7"*.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/texlive/vi/ky-nang/ma-r-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
