想比较两组数据,最笨的办法是把所有观测顺序反复打乱。但许多打乱其实没有产生新分组:同组成员互换位置,检验结果仍然一样。R 包 permute 的开发版新增“有序集合分割”——把观测分进角色不同、组内无须排序的若干组,只保留真正不同的标签分配。
作者用 20 只金豺的下颌长度演示:雌雄各 10 只。自由打乱观测索引共有约 2.43×10^18 种可能;改用 type = "partition" 并固定两组人数后,只剩 184,756 种不同分配。返回结果仍是常用的观测索引,因此原有分析流程可以继续使用。
这次更新还加入公式接口,例如用 ~ Sex 直接从数据指定分组变量,并可用类似方式描述区组——也就是只允许同一学校、医院或实验批次内部交换标签。它让复杂置换设计少写一层手工代码,也更清楚地表达“谁能和谁互换”。相关改动目前仍在开发版本中。