将一组可行的R命令包装到函数中的问题

时间:2011-12-16 16:28:22

标签: r ggplot2

我使用r命令集合生成dendrogam。它工作得很好,并将生成的dendromgram保存为PDF文件。为了提高效率,我将这些命令包装为一个函数,它不会改变任何东西。但是,pdf只是一个没有任何图形内容的空白文件。请让我知道我的功能定义有什么问题。感谢。

myplot<-function(inputcsv, outputfile){

library(ggdendro)

library(ggplot2)

x<-read.csv(inputcsv,header=TRUE)

d<-as.dist(x,diag=FALSE,upper=FALSE)

hc<-hclust(d,"ave")

dhc<-as.dendrogram(hc)

ddata<-dendro_data(dhc,type="rectangle")

ddata$labels$text <- gsub("\\."," ",ddata$labels$text)

ggplot(segment(ddata))+geom_segment(aes(x=x0,y=y0,xend=x1,yend=y1))
pdf(outputfile, width=30,height=35)

last_plot()

dev.off()
}

1 个答案:

答案 0 :(得分:3)

R FAQ

将你的ggplot调用包装在print()函数中。

ggplot和朋友返回一个对象,并且只在打印对象时才会进行绘图。在命令行执行此操作时,将自动进行打印。当你将它粘贴在脚本或函数中时,你必须自己动手。

关于这是一个好主意还是一个只会产生这样的问题的愚蠢的事情的争论仍在继续......