R语言descriptive函数首次循环图文错位,如何修正?
解决R语言descriptive函数首次循环图文错位问题
问题原因
R默认会缓冲文本输出,首次执行循环时,print()输出的统计信息会暂时存放在输出缓冲区中,直到执行绘图命令(触发图形设备刷新)才一次性全部输出,导致所有统计信息堆在直方图前面,出现图文错位;第二次循环时缓冲区机制已适配,因此图文对应正常。
修改方案
在每次print()输出统计信息后,调用flush.console()强制刷新输出缓冲区,让文本内容立刻显示,避免积压。
修改后的函数代码
descriptive <- function(df1, df2){ column_names <- colnames(df1) for (column in column_names) { par(mfrow=c(1,2)) # 处理<=8的数据集 print("<= 8") print(summary(df1[[column]])) flush.console() # 强制刷新文本输出 hist(df1[[column]], main="<= 8", col="blue", ylim= c(0,500)) # 处理<=18的数据集 print("<= 18") print(summary(df2[[column]])) flush.console() # 强制刷新文本输出 hist(df2[[column]], main="<= 18", col="blue", ylim = c(0, 500)) mtext(column, side = 3, line = -2, outer = TRUE) } }
效果说明
修改后,首次循环会先输出<=8对应的统计信息,紧接着显示左侧直方图;然后输出<=18的统计信息,再显示右侧直方图,和后续循环的图文对应效果完全一致。
内容的提问来源于stack exchange,提问作者user19611357
相关产品推荐
相关产品推荐

