我想知道如何将R图重定向到MS Word?就像sink()
将R输出重定向到任何文件而不是图形。我试过R2Wd,但有时候它没有正常工作。任何评论和帮助将受到高度赞赏。感谢
答案 0 :(得分:7)
要回答您的直接问题,将R脚本和绘图的结果转换为单词的最佳方法可能是通过某种形式的Sweave。查找odfweave以将R输出发送到LibreOffice文件,然后可以将其转换为单词,如果您有正确的插件,甚至可以直接在Word中打开。
要创建可编辑的绘图(即您可以更改绘图的外观,移动图例等)我建议将绘图保存为svg格式(可缩放矢量图形),然后可以使用优秀的免费矢量编辑图形应用inkscape。
例如,如果我将ggplot2图形创建为对象
library(ggplot2)
dataframe<-data.frame(fac=factor(c(1:4)),data1=rnorm(400,100,sd=15))
dataframe$data2<-dataframe$data1*c(0.25,0.5,0.75,1)
testplot<-qplot(x=fac, y=data2,data=dataframe, colour=fac, geom=c("boxplot", "jitter"))
您可以使用Cairo包,它允许创建svg文件,然后我可以在Inkscape中编辑它们。
library(Cairo)
Cairo(600,600,file="testplot.svg",type="svg",bg="transparent",pointsize=8, units="px",dpi=400)
testplot
dev.off()
Cairo(1200,1200,file="testplot12200.png",type="png",bg="transparent",pointsize=12, units="px",dpi=200)
testplot
dev.off()
有关详细信息,请阅读上一个问题,其中包含更多答案Create Editable plots from R
另外,您可以按照Hadley的建议,保存实际的ggplot2对象,然后再加载并修改它
save(testplot, file = "test-plot.rdata")
# Time passes and you start a new R session
load("test-plot.rdata")
testplot + opts(legend.position = "none")
testplot + geom_point()
答案 1 :(得分:2)
要使用MSword获取类似sink的行为,请查看wdTxtStart
包中的TeachingDemos
函数。这在内部使用R2wd,因此您将看到类似的功能,这只是将您所做的一切发送到word文档。
图表不会自动发送,因为您可能会添加图表,但一旦您知道图表已完成,就可以使用wdtxtPlot
将当前图表发送到word文档。
如果您提前知道自己想要做什么,那么sweave
或类似的东西可能是更好的方法(正如已经提到的那样)。创建Rexcel的小组也在开发Sword,它可以像MSword中的内容一样发誓。