R中的随机子集向量
有没有一种方法可以使用sample()或split()(或两者的组合)将向量元素分配给R中的多个子数组 本质上我需要的是一个函数,它可以随机地将值分配给多个子数组 以下是我的全部特定代码:R中的随机子集向量,r,sub-array,R,Sub Array,有没有一种方法可以使用sample()或split()(或两者的组合)将向量元素分配给R中的多个子数组 本质上我需要的是一个函数,它可以随机地将值分配给多个子数组 以下是我的全部特定代码: K <- 2 # number of subarrays N <- 100 Hstar <- 10 perms <- 10000 probs <- rep(1/Hstar, Hstar) K1 <- c(1:5) K2 <- c(6:10) specs &
K <- 2 # number of subarrays
N <- 100
Hstar <- 10
perms <- 10000
probs <- rep(1/Hstar, Hstar)
K1 <- c(1:5)
K2 <- c(6:10)
specs <- 1:N
pop <- array(dim = c(c(perms, N), K))
haps <- as.character(1:Hstar)
for(j in 1:perms){
for(i in 1:K){
if(i == 1){
pop[j, specs, i] <- sample(haps, size = N, replace = TRUE, prob = probs)
} else{
pop[j,, 1] <- sample(haps[K1], size = N, replace = TRUE, prob = probs[K1])
pop[j,, 2] <- sample(haps[K2], size = N, replace = TRUE, prob = probs[K2])
}
}
}
K这取决于是否需要替换(重复/省略元素的可能性)。不管怎样,这是一条单行线
sample(x,length(x),replace=FALSE)
对于整个多个子阵列的事情不是100%清楚,但我的方法是:
num.intervals<-5
interval.size<-length(x)/5 #need to make sure this is evenly divisible I suppose
arr.master<-rep(NA,0)
for (i in 1:num.intervals){
arr.master<-rbind(arr.mater,sample(x,interval.size,replace=TRUE)
}
num.intervalsTrysample
。它将给你随机确定的子集,你可以告诉它你想要的子集的大小。我很困惑-你是在问如何创建sub1
,sub2
。。。以一种不那么麻烦的方式?或者您正在询问如何从sub1
和sub2
进行采样。“两个大小相等的子阵列”令人困惑,因为在您的示例中,代码sub1
和sub2
的大小不同,“sub”名称表示“子阵列”。样本量是随机的吗?或者您希望从不同大小的阵列中获得相同大小的样本?有没有替换?@Frank哎哟。。。我应该看到的。现在就改了。@Gregor我正在尽可能地做极简主义者。我会发布我的完整代码。请不要发布你的完整代码!更确切地说,只是描述得更详细一点。也许可以扩展现有的示例,但将其保持在最小值是非常棒的!这听起来很有希望。你的建议是在用值填充较大的数组后,将数组分解为任意数量的子数组,这听起来比我所做的要简单得多(基本上相反)。