Если я вас правильно понял, вы пытаетесь создать функцию, которая будет возвращать 1 при каждом вызове в первые x секунд, затем возвращать 0 при каждом вызове в следующие x секунд, а затем возвращать 1 в течение следующих x секунди т. д. И по истечении определенного total
времени это должно быть «сделано», возможно, вернуть -1?
Вы можете сделать это, используя следующую функцию, которая «создаст» функцию с любым желаемым интервалом:
flipper <- function(interval=10, total = 60) {
t0 <- Sys.time()
function() {
seconds <- round(as.double( difftime(Sys.time(), t0, u = 'secs')))
if(seconds > total)
return(-1) else
return(trunc( 1 + (seconds / interval ) ) %% 2)
}
}
Вы можете использовать это для создания функции, которая чередуется от 0 до 1 каждые 10 секунд в течение первых 60 секунд и возвращает -1 через 60 секунд:
> flp <- flipper(10,60)
Сейчасвызов flp()
будет иметь то поведение, которое вы ищете, то есть, когда вы звоните flp()
в течение следующих 60 секунд, оно будет меняться от 1 до 0 каждые 10 секунд, а через 60 секунд будет просто возвращать -1.