Tôi đang gặp vấn đề về lập trình R cho Sweave và nhóm #rstats twitter thường trỏ đến đây, vì vậy tôi nghĩ tôi sẽ đặt câu hỏi này cho đám đông SO. Tôi là một nhà phân tích, không phải là một lập trình viên - vì vậy hãy dễ dàng đăng bài đầu tiên của tôi.Lập trình R/Sweave cho thích hợp Sexpr đầu ra
Đây là vấn đề: Tôi đang soạn thảo báo cáo khảo sát trong Sweave with R và muốn báo cáo lợi nhuận biên trong hàng sử dụng \Sexpr{}
. Ví dụ: thay vì nói:
Chỉ 14% người trả lời cho biết 'X'.
Tôi muốn viết báo cáo như thế này:
Chỉ \ Sexpr {p.mean (variable)} $ \% $ số người được hỏi cho biết 'X'.
Vấn đề là Sweave chuyển đổi kết quả của biểu thức trong \Sexpr{}
thành chuỗi ký tự, có nghĩa là đầu ra từ biểu thức trong R và đầu ra xuất hiện trong tài liệu của tôi khác nhau. Ví dụ, ở trên tôi sử dụng chức năng 'p.mean':
p.mean<- function (x) {options(digits=1) mmm<-weighted.mean(x, weight=weight, na.rm=T) print(100*mmm) }
Trong R, đầu ra trông như thế này:
p.mean(variable) >14
nhưng khi tôi sử dụng \Sexpr{p.mean(variable)}
, Tôi nhận được một chuỗi ký tự unrounded (trong trường hợp này: 13.5857142857143) trong tài liệu của tôi. Tôi đã cố gắng để giới hạn đầu ra của chức năng của tôi để digits=1
trong môi trường toàn cầu, trong chức năng chính nó, và và trong các lệnh khác nhau. Nó chỉ có vẻ chứa những gì R in, không phải là chuyển đổi nhân vật đó là kết quả của biểu thức và cuối cùng in trong tập tin LaTeX.
as.character(p.mean(variable)) >[1] 14 >[1] "13.5857142857143"
Có ai biết những gì tôi có thể làm gì để hạn chế các chữ số in trong file LaTeX, hoặc bằng cách tái lập trình các chức năng R hoặc với một thiết lập trong Sweave hoặc \Sexpr{}
?
Cảm ơn, Aleksandar.Tôi viết lại chức năng như sau: p.mean <- function (x) { \t mmm <-weighted.mean (x, weight = weight, na.rm = T) \t return (tròn (100 * mmm)) \t} Tôi đã xác định trước biến trọng số vì tôi đang cố gắng thu nhỏ chương trình khi tôi nhập. Bởi vì tất cả các tập dữ liệu mà tôi làm việc có biến trọng số của họ có nhãn 'trọng lượng', điều này làm cho văn bản của tôi chỉ là một chút hiệu quả hơn. – deoksu