我使用另一个变量block创建一个向量(使用sample()函数)的随机置换,以便为其他块中的每个唯一元素进行随机置换。但是,当块中的唯一元素变大时,数量排列大小会发生变化。我不确定unlist()函数是否正在创建空间分隔符,或者为什么会发生这种情况。请参阅下面的示例代码;使用block1的排列的维数是原始变量的长度,但是block2的长度更长。我对代码为什么这样做了目瞪口呆;有什么想法吗?unlist在R中创建附加值
x <- sample(1:3, 250, replace = TRUE)
block1 <- sample(1:20, 250, replace = TRUE)
block2 <- sample(1:100, 250, replace = TRUE)
block_permutation = function(x, block) unlist(as.vector(sapply(unique(block), function(j) sample(x[block==j]))))
perm1<- sapply(1:2, function(i) block_permutation(x, block1))
perm2<- sapply(1:2, function(i) block_permutation(x, block2))
dim(perm1)
dim(perm2)
此代码看起来复杂得多,它必须是。你能否提供一些更清晰的信息来说明你想要置换的内容?为了什么目的? – Thomas