2013-05-08 170 views
6

我有某些變量,R中的lm會自動包含反引號/後引號,例如,名稱中含有冒號的變量。在R輸出中刪除反引號

經過一些處理後,我試圖用write.table寫出線性模型的變量和係數。不幸的是,反引號也寫出來了。

如何防止這些反引號被寫入?

舉個簡單但不切實際例如:

d <- data.frame(`1`=runif(10), y=runif(10), check.names=F) 
l <- lm(y ~ `1`, d) 
write.table(data.frame(l$coefficients), file="lm.coeffs", quote=F, sep="\t", col.names=F) 

文件lm.coeffs會 - 很明顯 - 在輸出,而不是1的第一列具有`1`。除了某些其他腳本的後處理之外,如何從輸出中移除反引號?

回答

9

你可以這樣做在R中後處理而不是文件,使用capture.output將輸出存儲在變量中。使用gsub刪除反引號。最後,打印輸出到一個文件使用cat

report <- capture.output(write.table(data.frame(l$coefficients), 
         quote = FALSE, sep = "\t", col.names = FALSE)) 

cat(gsub("`", "", report), sep = "\n", file = "lm.coeffs") 
+0

+1我從來沒有想過什麼'write.table'返回無形的! – mnel 2013-05-08 01:02:28