У меня есть следующий векторКак можно векторизовать доступ к соседним векторным элементам в R?
v = c(F, F, F, T, F, F, F, F, F, T, F, F, F)
Как я могу изменить V так, что предыдущие 2 элементов и следующие 2 элементов каждого элемента ИСТИНЫ об также установлены в TRUE, используя векторизованные операции? То есть, результат должен быть:
F, T, T, T, T, T, F, T, T, T, T, T, F
Конечно, это можно сделать с петлей на каждом элементе об, но я хочу понять, если это возможно, векторизации такого рода операций. Также отличные от this question элементы из v независимы, и мне не нужно выполнять вычисления на каждом из них. Это чистая проблема индексации.
Вы можете изменить его, чтобы включить эти ограничения: 'v [уникальный (as.vector (sapply (который (v), функция (х) {если (x> 2) {x + c (-2, -1,1,2)} else {1: (x + 2)}})))] <- TRUE' – harkmug
@rmk Да, хотя это касается только левые конечные точки, я думаю. Разумеется, что-то подобное можно было бы сделать для другого конца, но тогда я думаю, что мы хотели бы отказаться от анонимной функции, я полагаю. – joran
@rmk проверить эту тему для обсуждения того, как обрезать вектор по краям: http://stackoverflow.com/questions/16220521/how-to-trim-an-r-vector/16222580#16222580 –