Я использую вложенный цикл for для создания жадного алгоритма в R.
z = 0
for (j in 1:length(t))
for (i in 1:(length(t) - j))
if ((t[j + i] - t[j]) >= 30)
{z <- c(z,j + i - 1)
j <- j + i - 1
break}
z
Где t - такой вектор, как:
[1] 12.01485 26.94091 33.32458 49.46742 65.07425 76.05700
[7] 87.11043 100.64116 111.72977 125.72649 139.46460 153.67292
[13] 171.46393 184.54244 201.20850 214.05093 224.16196 237.12485
[19] 251.51753 258.45865 273.95466 285.42704 299.01869 312.35587
[25] 326.26289 339.78724 353.81854 363.15847 378.89307 390.66134
[31] 402.22007 412.86049 424.23181 438.50462 448.88005 462.59917
[37] 473.65289 487.20678 499.80053 509.14141 526.03873 540.17209
[43] 550.69941 565.74602 576.06882 589.07297 598.53208 614.20677
[49] 627.44605 648.08346 665.49614 681.46445 691.01806 704.05762
[55] 714.09172 732.04124 745.90960 758.52628 769.80519 779.41537
[61] 788.35732 805.78547 818.75262 832.71196 844.97859 856.08608
[67] 865.72998 875.55945 887.20862 900.00000
Цель для функциичтобы найти индексы, чьи различия максимально приближены к 30, и сохранить их в z.
Например, с предоставленным вектором t я ожидал бы, что z будет [0, 2, 4, 6,8, 10, ... 70]
Функциональность не моя проблема сейчас, так как я сталкиваюсь с ошибкой:
Error in if ((t[j + i] - t[j]) >= 30) { :
missing value where TRUE/FALSE needed
Я новичок в R, так что я знаюЯ не использую векторизацию, которой известен R.Я просто хочу, чтобы «j» и «i» были «переменными счетчика», которые я могу использовать для доступа к определенным элементам вектора t, но по неизвестной мне причине оператор if не дает значения T / F.
Есть предложения?