R语言 制作2个子集向量,使值按索引方式不同

laawzig2  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(89)

我想从相同的数据中得到2个向量子集,replace=TRUE
即使两个向量可以包含相同的值,它们也不能在同一索引位置相同。
举例来说:

> set.seed(1)
> a <- sample(15, 10, replace=T)
> b <- sample(15, 10, replace=T)
> a
 [1]  4  6  9 14  4 14 15 10 10  1
> b
 [1]  4  3 11  6 12  8 11 15  6 12
> a==b
 [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

在这种情况下,向量ab在索引1处包含相同的值(值==4),这对我的目的来说是错误的。
有没有简单的方法来纠正这一点?
可以在subset步骤上完成吗?
或者我应该通过一个循环一个元素一个元素地检查,如果值是相同的,再选择一个b[i],然后再检查一次,如果它不是相同的 *ad infinite *?
多谢!

xwbd5t1u

xwbd5t1u1#

我的想法是,而不是得到2个样本的长度10与更换,得到10个样本的长度2没有更换

library(purrr)
 l <- rerun(10,sample(15,2,replace=FALSE))

l中的每个元素都是长度为2的整数向量。这两个整数肯定是不同的,因为我们在sample中指定了replace=FALSE

# from l extract all first element in each element, this is a
 a <- map_int(l,`[[`,1)
 # from list extract all second elements, this is b
 b <- map_int(l,`[[`,2)
mrphzbgm

mrphzbgm2#

两阶段抽样程序如何

set.seed(1)
x <- 1:15
a <- sample(x, 10, replace = TRUE)
b <- sapply(a, function(v) sample(x[x != v], 1))
a != b
#[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

我们首先画出样本a;然后,对于来自a的每个样本,我们从值x * 的集合中提取新样本,其中不包括来自a的当前样本。由于我们一次只做一个样本,因此我们自动允许带替换的采样。

相关问题