从一个区间求特定元素的和(需要模拟)

Find the sum of specific elements from an interval (simulation required)

我想用 for loop/while loop/ifelse (或任何其他方法)进行一些模拟,以获取特定间隔的元素总数。如果你能帮助我,提前谢谢你!我一直在为这个问题苦苦挣扎!

第二组五个数的元素必须与第一组五个数的元素相差大于1,那么第三组的元素也必须大于1一组五个数字和第二组五个数字的元素,以此类推以下一组五个数字

获取区间的代码:

set.seed(50) 
a=sort(runif(10,0,1)) 
b=sort(runif(30,1,4)) 
total=c(a,b) 

比如从图中的区间来看,total[1]total[2]total[3]total[4]total[5]是我的前五个数字,那么我接下来的 5 个数字与前 5 个数字相比必须有一个以上的差异。因此,接下来的 5 个数字必须是 total[11]total[12]total[13]total[14]total[15]。那么第 11 个数一定是 total[27] 因为 total[27] 是第一个与 total[11].

相差大于 1 的元素

请问有什么方法可以得到total[1]total[2]total[3]total[4]total[5]的元素之和, total[11], total[12],...,total[27],...?无需手动计数

这是一个带有 for() 循环的解决方案。首先,我们创建一个具有所需行数和列数的数据框。然后,在 for 循环中,我们得到一组五个数字并将它们与最后一组进行比较。在 for 循环之后,我们只保留感兴趣的数据帧行,例如集合相差一个或多个。

n_rows <- length(total)-4
df <- data.frame(ind= rep(NA, n_rows), keep= rep(FALSE, n_rows))
df$ind[1] <- 1; df$keep[1] <- TRUE
last_ind <- 1

for(i in 2:n_rows){
  set_i <- total[i:(i+4)]
  last_set <- total[last_ind:(last_ind+4)]


  df$ind[i] <- i
  df$keep[i] <- all(set_i - last_set >= 1)
  last_ind <- df$ind[max(which(df$keep))]

}

df <- df[df$keep, ]

df
   ind keep
1    1 TRUE
11  11 TRUE
27  27 TRUE