R:制作2个子集向量,以使值在索引方向上不同

Dan*_*Cee 3 indexing element r vector subset

我想用来根据相同数据设置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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,向量ab在索引1处包含相同的值(值=​​= 4),这对我来说是错误的。

有简单的方法可以纠正此问题吗?

并且可以在subset台阶上完成吗?

或者我应该经过一个循环检查逐个元素,如果值相同,进行其他选择的b[i],并再次检查,如果它是不相同的循环往复

非常感谢!

fma*_*arm 5

我的想法是,不用替换就得到2个长度为10的样本,而是不用替换就得到10个长度为2的样本

 library(purrr)
 l <- rerun(10,sample(15,2,replace=FALSE))
Run Code Online (Sandbox Code Playgroud)

中的每个元素l都是长度为2的整数的向量。保证这两个整数是不同的,因为我们replace=FALSEsample

 # 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)
Run Code Online (Sandbox Code Playgroud)