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 ra đầ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ụ:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
Mở ví dụ knitr này trên OverleafNhư 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à kết quả đầu ra của nó được in theo định dạng giống như listing. 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ả trong phần tiếp theo.
Một khối mã như khối được trình bày ở phần trước thường được gọi là chunk. Bạn có thể đặt thêm một số tùy chọn trong các chunk của knitr. Xem ví dụ dưới đây:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
echo=FALSE Tùy chọn này ẩn mã và chỉ in ra kết quả do R tạo ra.
cache=TRUE Nếu cache được đặt thành true, chunk sẽ không được chạy, chỉ sử dụng 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 chunk đó không thay đổi.
Lưu ý rằng tùy chọn cache=TRUE hiện chưa được hỗ trợ trên Overleaf, nhưng nó sẽ hoạt động khi chạy cục bộ.
Có thể truy cập các đối tượng được tạo trong một chunk và in chúng ngay trong dòng văn bản.
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@So, the mean of the data is $\Sexpr{mean(X)}$\end{document}
Mở ví dụ knitr này trên OverleafLệnh \Sexpr{mean(X)} in ra kết quả trả về bởi mã R mean(X). Bên trong dấu ngoặc nhọn, bạn có thể truyền bất kỳ lệnh R nào.
Mở ví dụ knitr này trên OverleafBiểu đồ histogram này sử dụng dữ liệu được lưu trong “data.txt”, nằm 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 chunk.plot1 Đây là nhãn 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ị. Tham số này giống với tham số được dùng trong môi trường figure. fig.height=4, fig.width=4 Chiều rộng và chiều cao của hình. fig.cap="First plot" Chú thích cho hình.
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 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 tên là mycode.R mà chúng ta đưa vào tài liệu LaTeX:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Hãy chú ý các dòng:
## ---- myrcode1
và
## ---- myrcode2
Các dòng này đánh dấu điểm bắt đầu của một chunk mã và là bắt buộc nếu bạn muốn sử dụng script này trong tài liệu, như được minh họa trong đoạn mã sau:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Chunk đầ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 cache. Sau khi script đã được nhập, bạn có thể in một chunk bằng nhãn mà 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ã trong bài viết vào một dự án mà bạn có thể mở trên Overleaf.