2013-05-08 154 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