在R中绘制箱线图时,如何遍历数据框列表简化代码?
R中简化箱线图函数的方法
当然可以不用手动指定每个数据框的索引,你可以通过lapply批量提取列表中所有数据框的目标列,再把结果传给boxplot,这样不管列表里有多少个数据框都能自动处理,不用硬编码索引。
修改后的函数代码如下:
plotting <- function(dfs, name="pdf_name", column, names, colours, title="No_title"){ pdf(name) # 批量提取所有数据框的目标列,生成列向量的列表 plot_data <- lapply(dfs, function(x) x[[column]]) # 绘制带异常值的箱线图 boxplot(plot_data, names=names, col=colours) title(title) # 绘制不带异常值的箱线图 boxplot(plot_data, col=colours, names=names, outline=F) title(paste(title, "without outliers")) dev.off() }
关键说明:
lapply(dfs, function(x) x[[column]])会遍历dfs列表中的每一个数据框,提取指定的column列,最终返回一个包含所有目标列向量的列表,而boxplot本身支持直接接收这种列表作为输入。- 这样修改后,不管你的
dfs列表里有3个还是更多数据框,代码都能自动适配,不用再手动写dfs[[1]]、dfs[[2]]这种硬编码的索引。
内容的提问来源于stack exchange,提问作者PowerPuffen
相关产品推荐
相关产品推荐

