Мне нужно сгладить некоторые смоделированные данные, но иногда возникают проблемы, когда смоделированные ординаты, которые необходимо сглаживать, в основном имеют одно и то же значение. Вот небольшой воспроизводимый пример простейшего случая.
> x <- 0:50
> y <- rep(0,51)
> loess.smooth(x,y)
Error in simpleLoess(y, x, w, span, degree, FALSE, FALSE, normalize = FALSE, :
NA/NaN/Inf in foreign function call (arg 1)
лёсс (y ~ x)
, лёсс (x, y)
, и их аналог в MATLAB дают ожидаемые результаты без ошибок в этом примере. Я использую здесь loess.smooth
, потому что мне нужны оценки, полученные по заданному количеству точек. Согласно документации, я полагаю, что loess.smooth
и loess
используют одни и те же функции оценки, но первая является «вспомогательной функцией» для обработки точек оценки. Ошибка, похоже, исходит от функции C:
> traceback()
3: .C(R_loess_raw, as.double(pseudovalues), as.double(x), as.double(weights),
as.double(weights), as.integer(D), as.integer(N), as.double(span),
as.integer(degree), as.integer(nonparametric), as.integer(order.drop.sqr),
as.integer(sum.drop.sqr), as.double(span * cell), as.character(surf.stat),
temp = double(N), parameter = integer(7), a = integer(max.kd),
xi = double(max.kd), vert = double(2 * D), vval = double((D +
1) * max.kd), diagonal = double(N), trL = double(1),
delta1 = double(1), delta2 = double(1), as.integer(0L))
2: simpleLoess(y, x, w, span, degree, FALSE, FALSE, normalize = FALSE,
"none", "interpolate", control$cell, iterations, control$trace.hat)
1: loess.smooth(x, y)
loess
также вызывает simpleLoess
, но с другими аргументами. Конечно, если вы измените значения y в достаточной степени, чтобы они были отличными от нуля, loess.smooth
будет работать без ошибок, но мне нужно, чтобы программа работала даже в самом крайнем случае.
Надеюсь, кто-нибудь сможет помочь мне с одним или всеми из следующих действий:
loess.smooth
, а не другие функции, вызывают эту ошибку, и найдите решение этой проблемы. лесс
, но все еще оценивает оценку в указанном количестве точек, которые могут отличаться от вектора x. Например, я мог бы использовать только x <- seq (0,50,10)
в сглаживании, но оценить оценку как x <- 0:50
. Насколько мне известно, использование предсказать
с новым фреймом данных не поможет должным образом справиться с этой ситуацией, но, пожалуйста, дайте мне знать, если я что-то упускаю. Заранее благодарим за помощь в решении этой проблемы.
{вектор У меня есть этот код: "Итератор произвольного доступа, указывающий на новое местоположение элемента, который следует за последним элементом, удаленным вызовом функции, который является концом вектора, если операция удалила последний элемент. в последовательности. " Этот код дает сбой, но если я использую int main()
{
vector<int> res;
res.push_back(1);
vector<int>::iterator it = res.begin();
for( ; it != res.end(); it++)
{
it = res.erase(it);
//if(it == res.end())
// return 0;
}
}
if (it == res.end ())
, а затем возвращаюсь, он работает. Почему? Кэширует ли цикл for res.end ()
, поэтому оператор не равно не работает?