如果我从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个项目)。
谢谢!
答案 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