gpt4 book ai didi

r - 从另一个随机选择其一些值但按顺序且所选值之间的距离最小的向量创建一个向量?

转载 作者:行者123 更新时间:2023-12-03 23:33:31 24 4
gpt4 key购买 nike

我有一个数字向量,我想随机但按顺序选择其中一些。我该怎么办?

例如:

vector <- runif(10, min=0, max=101)
vector

[1] 35.956732 67.608039 20.099881 23.184217 9.157408 34.105185 97.459770 25.805254 74.537667 18.865662

我可以使用哪个代码来创建一个新向量,例如,包含 10 个值中的四个,并且要求这四个值与原始向量的顺序相同?即向量不能是9.157408 67.608039 74.537667 97.459770而是67.608039 9.157408 97.459770 74.537667

任何帮助都会很棒。提前致谢。

第二部分(更新)

如果我想在连续选定的值中包含一定数量的步数怎么办?

也就是说,如果我有这个向量:

[1] 2.1 3.4 1.6 8.9 2.3 5.4 6.4 1.3 10.8 3.7 13.4 2.4 5.4 6.8

如何从这 14 个值中选择 3 个值,附加条件是在两个选定值之间必须至少有 3 个未选定值。例如,选定的向量可以是 2.1 5.4 6.8,但不能是 1.6 5.4 10.8

最佳答案

我们可以从vectorsample 4个元素,然后match得到索引并子集vector

v1 <- sample(vector, 4)
vector[match(v1, vector)]

如果我们需要每 4 个元素 sample 1 个元素,我们可以通过指定 widthby 来使用 rollapply >

library(zoo)
rollapply(v2, 4, by = 4, FUN = function(x) sample(x, 1))
#[1] 1.6 1.3 2.4

或者使用循环

out <- c()
flag <- TRUE
i <- 1
while(flag) {
if((i + 4) > length(v2)) {
break
flag <- FALSE

}

i1 <- i:(i + 2)

tmp <- sample(i1, 1)
out <- c(out, tmp)

i <- tmp + 3


}

out
#[1] 3 7 11

数据

v2 <- c(2.1, 3.4, 1.6, 8.9, 2.3, 5.4, 6.4, 1.3, 10.8, 3.7, 13.4, 2.4, 
5.4, 6.8)

关于r - 从另一个随机选择其一些值但按顺序且所选值之间的距离最小的向量创建一个向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66036738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com