我想讀取R文件或腳本,修改正在讀取的外部數據文件的名稱並將修改的R代碼導出到新的R文件或腳本中。除了正在讀取的數據文件的名稱(以及新的R文件的名稱)之外,我希望兩個R腳本是相同的。在R中使用cat創建格式化的R腳本
我可以走近,除了我不知道如何保留空白行我用於可讀性和錯誤減少。
這是正在讀取的原始R文件。請注意,這個文件中的一些代碼是非感性的,但對我來說是無關緊要的。這段代碼不需要運行。
# apple.pie.all.purpose.flour.arsc.Jun23.2013.r
library(my.library)
aa <- 10 # aa
bb <- c(1:7) # bb
my.data = convert.txt("../applepieallpurposeflour.txt",
group.df = data.frame(recipe =
c("recipe1", "recipe2", "recipe3", "recipe4", "recipe5")),
covariates = c(paste("temp", seq_along(1:aa), sep="")))
ingredient <- c('all purpose flour')
function(make.pie){ make a pie }
這裏是R代碼我用來讀取上面的文件,修改它並導出結果。此R代碼運行並且是唯一需要運行以實現所需結果的代碼(除了我無法準確獲取新R腳本的格式與原始R腳本的格式相匹配,即原始R中存在的空行腳本是不是在新的R腳本存在):
setwd('c:/users/mmiller21/simple r programs/')
# define new fruit
new.fruit <- 'peach'
# read flour file for original fruit
flour <- readLines('apple.pie.all.purpose.flour.arsc.Jun23.2013.r')
# create new file name
output.flour <- paste(new.fruit, ".pie.all.purpose.flour.arsc.Jun23.2013.r", sep="")
# add new file name
flour.a <- gsub("# apple.pie.all.purpose.flour.arsc.Jun23.2013.r",
paste("# ", output.flour, sep=""), flour)
# add line to read new data file
cat(file = output.flour,
gsub("my.data = convert.txt\\(\"../applepieallpurposeflour.txt",
paste("my.data = convert.txt\\(\"../", new.fruit, "pieallpurposeflour.txt",
sep=""), flour.a),
sep=c("","\n"), fill = TRUE
)
這裏是產生新的R腳本:
# peach.pie.all.purpose.flour.arsc.Jun23.2013.r
library(my.library)
aa <- 10 # aa
bb <- c(1:7) # bb
my.data = convert.txt("../peachpieallpurposeflour.txt",
group.df = data.frame(recipe =
c("recipe1", "recipe2", "recipe3", "recipe4", "recipe5")),
covariates = c(paste("temp", seq_along(1:aa), sep="")))
ingredient <- c('all purpose flour')
function(make.pie){ make a pie }
有一個在新創建的R檔一個空行,但我怎麼能插入原始R腳本中的所有空白行?感謝您的任何建議。
編輯:我似乎無法在StackOverflow上覆制空白行。他們似乎被自動刪除。 StackOverflow甚至刪除我正在使用的縮進,我似乎無法取代它。爲此事道歉。自動刪除空白行和縮進問題在手邊的問題具體是關於格式。我似乎無法修復該帖子以顯示R代碼格式在我的腳本中。但是,當我正在主動編輯帖子時,代碼顯示正確。
編輯:2013年6月27日:原始R文件和中間R文件的代碼中的空行和縮進刪除似乎與我的筆記本電腦,而不是與StackOverflow關聯。當我在辦公室桌面上查看這篇文章和我的答案時,格式是正確的。當我查看這篇文章和我的筆記本電腦的答案時,空行和縮進都消失了。也許我的筆記本電腦顯示器有故障。對不起,最初假設問題出在StackOverflow上。
你打算如何運行你的最終腳本,比如'apple.pie.all.purpose.flour.arsc.Jun23.2013.r'?我在問,因爲有更好的方法來處理你的問題。如果您從命令行運行腳本,則可以使輸入文件成爲參數(請參閱'commandArgs')。如果你使用R中的'source'來源腳本,那麼你可以將你的代碼包裝到一個函數中,該函數將文件名作爲參數。 – flodel
正如@ flodel所說,有很多更好的方法來處理這個問題,而不是文本消除。我會去自己的功能路線。 –
@flodel R腳本將被提交給羣集或超級計算機。如果我確定如何創建你建議的功能,我會在這裏發佈。無論文件如何創建,我的目標是兩個R文件都是相同的,除了我在上面強調的兩個區別。 –