【问题标题】:Creating a vector with certain values at specific positions based on another vector基于另一个向量在特定位置创建具有特定值的向量
【发布时间】:2017-09-10 02:45:58
【问题描述】:

如果我从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 项)。

谢谢!

【问题讨论】:

  • replace(integer(length(vector1)), sample_vector, 1)
  • tabulate(sample_vector,length(vector1))

标签: r vector replace


【解决方案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

【讨论】:

  • replace 好像是多余的
【解决方案2】:

使用此代码。

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

【讨论】:

    【解决方案3】:
    vector2 <- rep(0, length(vector1))
    vector2[sample_vector] <- 1
    

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 1970-01-01
      • 2022-06-14
      • 2021-07-26
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多