R将不需要的输出返回到屏幕或删除一些返回值
我有一个函数来生成一些绘图:R将不需要的输出返回到屏幕或删除一些返回值,r,function,return,echo,invisible,R,Function,Return,Echo,Invisible,我有一个函数来生成一些绘图: estrat.precios <- function(numeric1,numeric2,factor1,numeric3,numeric4,numeric5,string){ suppressPackageStartupMessages(library(lattice)) # histograma de distribución por factor1 tit=paste("Distribución de descuentos por fact
estrat.precios <- function(numeric1,numeric2,factor1,numeric3,numeric4,numeric5,string){
suppressPackageStartupMessages(library(lattice))
# histograma de distribución por factor1
tit=paste("Distribución de descuentos por factor1,",string)
h2<-histogram(~ numeric2 | factor1,main=tit,xlab = "Descuento")
# scatterplot de Descuentos vs proyección de venta por grupo
tit<-paste("Desctos vs. Proyección de Venta por factor1,",string)
s<-xyplot(numeric2 ~ numeric3 | factor1, main = tit,scales=list(x=list(log=10,equispaced.log=T)),xlab = "Monto Techo",ylab = "Descuento")
# scatterplot de descuentos vs precio de referencia por grupo
tit<-paste("Desctos vs precio de referencia por grupo,",string)
s2<-xyplot(numeric2 ~ numeric4, group= factor1, main = tit, scales=list(x=list(log=10,equispaced.log=T)), auto.key = T, xlab="Precios de Referencia", ylab="Descuento")
# Density plot de variación respecto de promedio
tit<-paste("Densidad de variaciones vs promedio de precios,",string)
d<-plot(density((numeric1-numeric5)/numeric5,na.rm=T),main=tit,cex.main=0.9)
# boxplot variación respecto de promedio
bs<-as.character(summary(numeric1-numeric5))
cs<-paste("Min=",bs[1],"1Q=",bs[2],"Mean=",bs[4],"3Q=",bs[5],"Max=",bs[6])
tit<-paste("Distribución de variaciones vs promedio,",string)
b<-boxplot((numeric1-numeric5)/numeric5,main=tit,cex.main=0.9)
mtext(text=c,side=1)
return((list(h2,s,s2,d,b)))
}
我已尝试将函数的最后一行更改为:
return(invisible(list(h2,s,s2,d,b)))
但它不会生成前3个图:h2、s、s2(使用晶格的),只有d和b
如何避免不必要的输出到屏幕并保留5个绘图?
提前感谢您可以在生成最后两个绘图之前显示使用Lattice的绘图,并返回不可见的
estrat.precios <- function(numeric1,numeric2,factor1,numeric3,numeric4,numeric5,string)
{
suppressPackageStartupMessages(library(lattice))
...
s2<-xyplot(numeric2 ~ numeric4, group= factor1, main = tit, scales=list(x=list(log=10,equispaced.log=T)), auto.key = T, xlab="Precios de Referencia", ylab="Descuento")
# display plots here
plot(h2)
plot(s)
plot(s2)
# Density plot de variación respecto de promedio
tit<-paste("Densidad de variaciones vs promedio de precios,",string)
...
invisible(list(h2,s,s2,d,b))
}
estrat.precios您是否可以通过向函数中提供您试图输入的值来实现这一点?你能更详细地描述一下你想要达到的目标吗?你到底要不要这些情节?你想用这些情节做什么?托马斯,谢谢你的回答。您可以通过调用函数像estrat.precios(1:5,seq(0.01,0.05,0.01),c(“A”,“A”,“B”,“c”,“c”),21:25,2:6,1.1:5.1,“string 09”)
进行复制。我想让绘图分析定价策略(可视化),然后决定是否保存它们。当我尝试您的解决方案时,它会有效地抑制屏幕上的输出,但在s2
的位置会显示一个空白画布(其他4个绘图都可以)。查找文件时,会出现警告:显示列表重画不完整
。我遗漏了什么吗?我看到了五个情节。在每个plot
语句之后和d之后执行Sys.sleep(1)
estrat.precios <- function(numeric1,numeric2,factor1,numeric3,numeric4,numeric5,string)
{
suppressPackageStartupMessages(library(lattice))
...
s2<-xyplot(numeric2 ~ numeric4, group= factor1, main = tit, scales=list(x=list(log=10,equispaced.log=T)), auto.key = T, xlab="Precios de Referencia", ylab="Descuento")
# display plots here
plot(h2)
plot(s)
plot(s2)
# Density plot de variación respecto de promedio
tit<-paste("Densidad de variaciones vs promedio de precios,",string)
...
invisible(list(h2,s,s2,d,b))
}