我使用另一個變量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