我有两个向量:
x <- c(1, 2, 3, 4)
y <- c(5, 6, 7, 8, 9, 10)
现在我想重新采样n次,以便两个矢量的数量可以随机混合并保持其尺寸。 例如
在n = 1
x <- c(2, 4, 7, 1)
y <- c(3, 9, 8, 6, 5, 10)
在n = 2
x <- c(5, 6, 10, 3)
y <- c(1, 9, 8, 4, 2, 7)
我怎样才能在R中实现这个目标?
答案 0 :(得分:2)
您可以定义自己的辅助函数,如
resample <- function(x,y) {
xx <- sample(c(x,y))
list(x=xx[1:length(x)], y=xx[-(1:length(x))])
}
然后将其与
一起使用# set.seed(15)
r1 <- resample(x,y)
r1$x
# [1] 7 2 8 5
r1$y
# [1] 3 10 4 1 9 6
r2 <- resample(x,y)
r2$x
# [1] 2 6 5 8
r2$y
# [1] 9 7 10 3 1 4
但看起来你可能正在置换案例/控件标签或其他东西?在这种情况下,您可能有一个组分配向量
group <- rep(c("x","y"), c(length(x),length(y)))
然后你可以只是每次混合组
的样本()# set.seed(15)
(g1<-sample(group))
# [1] "y" "x" "y" "y" "x" "y" "x" "x" "y" "y"
(g2<-sample(group))
# [1] "x" "y" "y" "y" "y" "y" "y" "x" "x" "x"
你可以用
提取索引which(g1=="x")
# [1] 2 5 7 8
which(g1=="y")
# [1] 1 3 4 6 9 10
如果你真的需要。