Я пытаюсь написать функцию, которая добавит элемент списка в другой список, если этот элемент списка меньше любого предыдущего значения в списке. У меня есть не векторизованная версия, которая работает:
myList <- c(14, 35, 12, 54, 67, 8, 32, 3, 78)
minVec <- function(x){
# Return a list of all numbers from x which are less than any previous number in the list
outList <- list(x[1])
for(i in 2:length(x)){
if(x[i] < min(x[1:i - 1])){
outList <- c(outList, x[i])}
}
return(unlist(outList))
}
minVec(myList)
Но мне нужно сделать это много раз во многих списках, и я хочу использовать lapply, чтобы ускорить это. Проблема в том, что для каждого элемента n
списка x
мне нужно найти минимум подмножества x[1:n - 1]
. Можно ли это сделать в lapply (или как-то иначе векторизовать)? Как сказать «для каждого элемента этого списка добавить элемент в новый список, если элемент меньше любого предыдущего значения в списке»?