2015-10-29 5 views
3

В knitr есть функция read_chunk, которая считывает внешний код в кусок. Возможно ли изменить процесс. То есть, сделайте функцию write_chunk(), которая сохранит исходный код в куске в файл R? Имя файла может совпадать с именем фрагмента.Сохраните кусок секса в R-файле

ответ

3

Я нашел решение, используя крючки. Добавьте следующий крюк:

knit_hooks$set(write_chunk = function(before, options, envir) { 
    if (before) { 
     fileConn<-file(paste0("chunk_",options$label,".R")) 
     writeLines(options$code, fileConn) 
     close(fileConn) 
    } 
}) 

и использовать опцию <<chunk-name, write_chunk=TRUE>> в заголовке фрагмента.

+0

Не стесняйтесь принимать свой собственный ответ! :) –

0

Вы можете использовать следующий синтаксис

Stangle(file = "Your_code.Rnw",output="Code.R"): 

Но это я могу доказать следующее сообщение об ошибке:

#Error: ‘Your_code.Rnw’ is not ASCII and does not declare an encoding 

Добавление следующий параметр (кодировка = "-8 UTF"), проблема кодирования решается

Stangle("Your_code.Rnw",output="Code.R",encoding="utf8") 
+0

Этого я не хочу. Я хочу только сохранить исходный код из одного куска. Кроме того, функция должна работать внутри Rnw, так что вы можете, например, примените функцию в сохраненном R-файле в следующем фрагменте. – Relund

Смежные вопросы