R语言中从列表生成向量并应用patchwork::area函数的实现方法
你之前的写法无法得到正确结果,是因为lapply返回的是普通列表,直接用c()拼接area对象和普通列表时,R不会将列表内的area元素拆解合并到布局向量中。
方案1:用do.call拆解列表拼接
将生成的areaList通过do.call传入c(),自动拆解列表内的所有area元素完成拼接:
design <- c( area(1, 1, maxVal, maxVal), do.call(c, areaList) )
方案2:利用area的向量化特性(更简洁)
patchwork::area本身支持向量化参数,不需要循环生成列表,直接传入行号向量即可一次性生成所有右侧区域:
# 无需提前生成areaList,直接传向量参数 design <- c( area(1, 1, maxVal, maxVal), area(t = vals, l = maxVal + 1) )
两种方案生成的design都和你手动编写的效果完全一致,调用plot(design)即可预览布局。
内容的提问来源于stack exchange,提问作者Electrino
相关产品推荐
相关产品推荐

