Đây là một yêu cầu cực kỳ đơn giản, và tôi không thể tin rằng tôi đã không tìm thấy giải pháp cho điều này được nêu ra, nhưng tôi đã được tìm kiếm cho nó xa và rộng mà không có may mắn.ESS & Knitr/Sweave: Làm thế nào để nguồn tập tin Rnw vào một phiên tương tác?
Tôi có một tệp .Rnw
được tải trong Emacs, tôi sử dụng M-n s
để biên dịch. Mọi thứ hoạt động tốt và thậm chí sẽ mở bộ đệm R
. Tuyệt quá. Nhưng bộ đệm đó hoàn toàn vô dụng: nó không chứa các đối tượng mà tôi chỉ có nguồn gốc!
Ví dụ tối thiểu .Rnw
file:
\documentclass{article}
\begin{document}
<<>>=
foo <- "bar"
@
\end{document}
Sử dụng M-n s
, bây giờ tôi có một R-đệm mới với một phiên nạp lên, nhưng:
> foo
Error: object 'foo' not found
Đó là đáng thất vọng. Tôi muốn chơi xung quanh với dữ liệu tương tác. Làm cách nào để đạt được điều đó? Tôi không muốn tìm nguồn cung cấp tệp theo từng dòng hoặc từng khu vực với C-c C-c
hoặc một cái gì đó tương tự mỗi lần tôi thay đổi mã của mình. Lý tưởng nhất, nó phải giống như chức năng nguồn của RStudio, nó để lại cho tôi một phiên R được chuẩn bị đầy đủ.
Tôi chưa thử điều này với sweave, chỉ với knitr.
CHỈNH SỬA: tùy chọn đoạn eval=TRUE
dường như không dẫn đến hành vi đúng.
cụ thể, 'đan'' đánh giá mã trong' parent.frame() 'theo mặc định, trừ khi bạn' đan (..., envir = globalenv()) '(đôi khi' cha mẹ.frame() 'chỉ là' globalenv() ', và đôi khi nó không phải là) –
Rất vui khi biết rằng bạn đã sửa lỗi này. Cảm ơn! Dọc theo dòng nhận xét của @ Yihui, tôi đã tự sửa lỗi này bằng cách chỉnh sửa '.ess_weave()' trong '" $ EMACS_HOME/site-lisp/ess/etc/ESSR.R "' để sử dụng 'envir = parent .frame (2) '(như trong' lệnh (tập tin, envir = parent.frame (2)) '), chứ không phải' '' '' '' mặc định 'envir = parent.frame()'. (Tôi chỉ là một người dùng ** knitr ** trong những ngày này, vì vậy tôi không chắc chắn cách chỉnh sửa đó chơi với Sweave.) –
Cảm ơn bạn đã phản hồi! Thiết lập 'ess-swv-processing-command' đã không thực hiện thủ thuật cho tôi, nhưng tôi đang xem xét sử dụng' envir = globalenv() 'ngay bây giờ. Tôi không nghĩ rằng tôi muốn chuyển sang phiên bản phát triển, nhưng tôi sẽ xem ESS ngược dòng như một con chim ưng :-) –