Одна из проблем, которые я имею со ВСЕМИ платформами журналирования, - то, что, если все в Вашей команде не проводят время для становления опытными в точно, как настроить ее и управлять ею, Вы никогда не знаете, распечатает ли данный оператор отладки или нет.
можно было выключить уровень (отладка), или можно было выключить один пакет.
я потратил впустую слишком много времени, предполагая, что оператор отладки распечатал бы, и он не делает. Теперь я главным образом полагаюсь на System.out.println () и просто прохожу и удаляю или преобразовываю их, когда я сделан, отладив.
я знаю, что это не отвечает на Ваш вопрос - я просто говорю, что можно хотеть рассмотреть, сколько выравнивания Вы имеете перед добавляющей сложностью.
Вход не состоит в том, что сложный и конечно выравнивается по ширине на большинстве больших проектов.
С индексами можно творить чудеса:
Сначала создайте вектор с выходными значениями:
probs <- rep(TRUE, 15)
ind <- c(5, 10)
val <- c( probs, rep(FALSE,length(ind)) )
# > val
# [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [13] TRUE TRUE TRUE FALSE FALSE
Теперь уловка. Каждый старый элемент получает ранг, каждый новый элемент получает половинный ранг
id <- c( seq_along(probs), ind+0.5 )
# > id
# [1] 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0
# [16] 5.5 10.5
Затем используйте порядок
для сортировки в правильном порядке:
val[order(id)]
# [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
# [13] TRUE TRUE TRUE TRUE TRUE
Все это очень творческие подходы. Я думаю, что работа с индексами - это определенно правильный путь (решение Марека очень хорошее).
Я бы просто упомянул, что есть функция, которая делает примерно это: append ()
.
probes <- rep(TRUE, 15)
probes <- append(probes, FALSE, after=5)
probes <- append(probes, FALSE, after=11)
Или вы можете сделать это рекурсивно с вашими индексами (вам нужно увеличивать значение «после» на каждой итерации):
probes <- rep(TRUE, 15)
ind <- c(5, 10)
for(i in 0:(length(ind)-1))
probes <- append(probes, FALSE, after=(ind[i+1]+i))
Между прочим, этот вопрос также ранее задавался в R-Help . Как говорит Барри:
«На самом деле я бы сказал, что не было способов сделать это, так как я не думаю, что вы действительно можете вставить в вектор - вам нужно создать новый вектор, который создает иллюзию вставки!»
Как насчет этого:
> probes <- rep(TRUE, 15)
> ind <- c(5, 10)
> probes.ind <- rep(NA, length(probes))
> probes.ind[ind] <- FALSE
> new.probes <- as.vector(rbind(probes, probes.ind))
> new.probes <- new.probes[!is.na(new.probes)]
> new.probes
[1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
[13] TRUE TRUE TRUE TRUE TRUE
Это довольно сложно. Вот один способ. Он перебирает список, вставляя каждый раз, так что это не слишком эффективно.
probes <- rep(TRUE, 15)
probes.ind <- ind + 0:(length(ind)-1)
for (i in probes.ind) {
probes <- c(probes[1:i], FALSE, probes[(i+1):length(probes)])
}
> probes
[1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
[13] TRUE TRUE TRUE TRUE TRUE
Это должно работать, даже если в ind есть повторяющиеся элементы, хотя для работы конструкции probes.ind требуется сортировка ind.