В то время как ответ Tats_innit имеет приятный штрих к нему, мне пришлось сделать это немного по-другому, так как у меня на странице более одного индикатора выполнения.
вот мое решение:
JSfiddle: http://jsfiddle.net/vacNJ/
HTML (пример):
JavaScript:
setTimeout(function(){
$('.progress .bar').each(function() {
var me = $(this);
var perc = me.attr("data-percentage");
var current_perc = 0;
var progress = setInterval(function() {
if (current_perc>=perc) {
clearInterval(progress);
} else {
current_perc +=1;
me.css('width', (current_perc)+'%');
}
me.text((current_perc)+'%');
}, 50);
});
},300);
@Tats_innit: Использование setInterval () для динамического повторения прогресса - это приятное решение, thx mate! ;)
EDIT:
Мой друг написал хороший плагин jquery для пользовательских твитовских бутстрапов. Вот демо: http://minddust.github.com/bootstrap-progressbar/
Вот репозиторий Github: https://github.com/minddust/ самозагрузки-прогрессбар [/ д2]
Используйте выражение tryCatch
вокруг функции, которая может вывести сообщение об ошибке:
testFunction <- function (date_in) {
return(tryCatch(as.Date(date_in), error=function(e) NULL))
}
. Хорошая вещь о функции tryCatch
заключается в том, что вы можете решить, что делать в случае ошибка (в этом случае return NULL
).
> lapply(dates2, testFunction)
[[1]]
[1] "2010-04-06"
[[2]]
NULL
[[3]]
[1] "2010-04-08"
Можно попытаться сохранить его просто, а не усложнять:
blockquote>R> as.Date( c("2010-04-06", "foo", "2010-04-08") ) [1] "2010-04-06" NA "2010-04-08"
Вы можете тривиально обернуть
na.omit()
или что угодно вокруг него. Или найдите индекс NA и выберете соответственно из исходного вектора или воспользуйтесь дополнением к NA, чтобы найти разобранные даты, или, или, или. Это все уже здесь.
- Вы можете сделать свой
testFunction()
что-то. Используйте тест там - если возвращаемая (разобранная) дата NA, сделайте что-то.- Добавьте блок
tryCatch()
илиtry()
в синтаксический анализ даты.Все вещи немного странны, поскольку вы переходите от структуры данных одного типа (вектор символов) к чему-то еще, но вы не можете легко смешивать типы, если не сохранить их в типе
list
. Возможно, вам нужно переосмыслить это.
Предполагая, что testFunction()
не является тривиальным и / или что его нельзя изменить, его можно обернуть в свою собственную функцию с помощью блока tryCatch (). Например:
> FaultTolerantTestFunction <- function(date_in) {
+ tryCatch({ret <- testFunction(date_in);}, error = function(e) {ret <<- NA});
+ ret
+ }
> FaultTolerantTestFunction('bozo')
[1] NA
> FaultTolerantTestFunction('2010-03-21')
[1] "2010-03-21"
tryCatch
, вероятно, является наилучшим способом продолжения ошибки вlapply
. Я думаю, пример даты был всего лишь примером? – Shane 7 April 2010 в 03:10failwith
вplyr
, которая автоматизирует эту общую задачу. – hadley 7 April 2010 в 17:13lapply(dates2, function(x) tryCatch(testFunctionWihoutTryCatch(x), error=function(e) NULL))
. Конечно, комментарий Дирка имеет смысл в этом конкретном случае. – DJJ 17 October 2016 в 14:21