2016-10-13 3 views
0

Я ищу, чтобы увидеть, есть ли способ в R читать в исходном коде файла .R в виде текста. То, что я хотел бы сделать, это указать путь к файлу .R, иметь R захватить этот R-файл и вернуть исходный код в тексте этого R-файла.Чтение в исходном коде из файла .R, редактирование его, а затем его сохранение

После этого я планирую внести изменения в исходный код, а затем сохранить отредактированный текст в том же месте (что, я считаю, я могу сделать с функцией save). Регулярное выражение gsub является твердым (как я написал код) и знаю, что будет соответствовать только тому, что я хочу, чтобы оно соответствовало и заменяло.

Естественно, я делаю все возможное, прежде чем пытаться это сделать. Часть, с которой я столкнулся, - это чтение в файле .R файла в качестве текста для редактирования. Я также не уверен, что это уничтожит форматирование R-файла, но, очевидно, было бы предпочтительнее не делать этого. Любая помощь очень ценится!

+2

Посмотрите на 'readLines' для чтения файла .R, а затем' write' для записи вашего вывода. – Benjamin

+1

Вы уверены, что это действительно необходимо? Выполнение 'gsub' в источниках кажется довольно экстремальным способом замены переменной. Но если это то, что вы хотите сделать, нет ничего особенного в файле R-кода по сравнению с обычным текстовым файлом, поэтому предложение Беньямина должно быть прямолинейным. – MrFlick

+1

Если у вас было 100 кодовых файлов и вы хотели что-то изменить во всех них с помощью регулярного выражения, открывая каждый из них, поиск замены в каждой из них был бы болью! –

ответ

1
code <- readLines("<path>") 
code_edited <- gsub("foo", "bar", code) 
writeLines(code_edited, "<path>") 
+0

Спасибо! Просто функция, которую я искал. И я знаю, что «gsub» может быть опасным, но я проверяю голову, сохраняя все подкрепленное. Я уверен, что мой метод будет работать. – giraffehere

+1

Я бы предложил сохранить код с другим именем, например 'writeLines (code_edited," ")'. Таким образом, вы не рискуете :) –

+0

О да, поверьте, я буду делать резервные копии и проверять заранее. :) – giraffehere