我想计算适合弗里德曼检验的阻塞设计的所有排列。考虑以下示例:
thedata <- data.frame(
score = c(replicate(4,sample(1:3))),
judge = rep(1:4,each=3),
wine = rep.int(1:3,4)
)
四位评委对 3 种葡萄酒进行了排名,现在我想为每位评委计算数据中所有可能的排列。我希望看到 1,296 种排列,如下所示:
require(permute)
CTRL <- how(within=Within("free"),
plots=Plots(strata=factor(thedata$judge)),
complete=TRUE,maxperm=1e9)
numPerms(12,CTRL)
但是,allPerms(12,control=CTRL)
会产生以下错误:
Error in (function (..., deparse.level = 1) :
number of rows of matrices must match (see arg 2)
我尝试使用该block
参数,但它只是返回一个矩阵,该矩阵将一个矩阵重复 4 次,其中 3 个值的 6 种可能排列:
CTRL <- how(within=Within("free"),
blocks=factor(thedata$judge),
complete=TRUE,maxperm=1e9)
allPerms(12,control=CTRL)
重要说明:我确实有一个自定义函数来获取结果,使用包中的withexpand.grid()
改编。我对我误解包的地方感兴趣,而不是我如何自己计算所有这些排列。permn()
combinat
permute