基于另一个向量在特定位置创建具有特定值的向量

时间:2017-04-13 20:45:46

标签: r vector replace

如果我从vector1开始,并测试哪些项目等于1:

vector1 <- c(0, 1, 1, 1, 0, 1, 1, 1, 0, 1)

test <- which(vector1 == 1)

现在测试等于:2,3,4,6,7,8,10

然后,我想随机选择测试中的两个项目:

sample_vector <- sample(test, 2, replace = FALSE)

上面的代码生成了一个sample_vector:6,3

我的问题是如何将sample_vector转换为:

vector2 <- 0, 0, 1, 0, 0, 1, 0, 0, 0, 0

我基本上只想将sample_vector中的项目分配给等于1,而将来自vector1的其余项目分配给等于0(即它看起来像vector2)。 vector2需要在vector1处具有相同的长度(10个项目)。

谢谢!

3 个答案:

答案 0 :(得分:1)

vector2 <- rep(0, length(vector1))
vector2[sample_vector] <- 1

答案 1 :(得分:1)

set.seed(44)
vector1 <- c(0, 1, 1, 1, 0, 1, 1, 1, 0, 1)
test <- which(vector1 == 1)
sample_vector <- sample(test, 2, replace = FALSE)
sample_vector
#[1] 8 3

replace(tabulate(seq_along(vector1)) - 1, sample_vector, 1)
#[1] 0 0 1 0 0 0 0 1 0 0

答案 2 :(得分:0)

使用此代码。

vector2 <- rep(0,len(vector1))
vector2[sample_vector] = 1