У меня немного проблемное программирование R для Sweave, и группа #rstats twitter часто указывает здесь, поэтому я подумал, что поставил бы этот вопрос в толпу SO. Я аналитик, а не программист, так что легко на первом посту.Программирование R/Sweave для правильного вывода Sexpr
Возникла проблема: я составляю отчет об исследовании в Sweave с R и хотел бы сообщить о предельных доходах в строке, используя \Sexpr{}
. Например, вместо того, чтобы говорить:
Только 14% респондентов сказали «Х».
Я хочу написать отчет, как это:
только \ Sexpr {p.mean (переменная)} $ \% $ респондентов сказали, что 'X'.
Проблема заключается в том, что Sweave преобразует результаты экспрессии в \Sexpr{}
в строку символов, что означает, что выход из выражения в R и выход, который появляется в моем документе, являются различными. Например, выше я использую функцию 'p.mean':
p.mean<- function (x) {options(digits=1) mmm<-weighted.mean(x, weight=weight, na.rm=T) print(100*mmm) }
В R, результат выглядит следующим образом:
p.mean(variable) >14
, но когда я использую \Sexpr{p.mean(variable)}
, В моем документе я получаю строку без окружения (в данном случае: 13.5857142857143). Я попытался ограничить вывод моей функции digits=1
в глобальной среде, самой функции и в различных командах. Кажется, что он содержит только то, что R печатает, а не преобразование символов, которое является результатом выражения и которое в конечном итоге печатает в файле LaTeX.
as.character(p.mean(variable)) >[1] 14 >[1] "13.5857142857143"
Кто-нибудь знает, что я могу сделать, чтобы ограничить цифры, напечатанные в файле LaTeX, либо путем перепрограммирования функции R или с установкой в Sweave или \Sexpr{}
?
Спасибо, Александар.Я переписал функцию как это: p.mean <- функция (х) { \t ттт <-weighted.mean (х, вес = вес, na.rm = Т) \t возврата (круглые (100 * ттт)) \t} Я предсказывал переменную веса, потому что я пытаюсь свести к минимуму программирование, поскольку я являюсь типом. Поскольку все наборы данных, с которыми я работаю, имеют свою переменную веса с надписью «вес», это делает мое письмо чуть более эффективным. – deoksu