Вы можете сделать это без необходимости загружать дополнительные пакеты и полагаться на них, чтобы они никогда не менялись, используя base :: Vectorize в одну строку:
> alls = Vectorize(smooth.spline,"nknots",SIMPLIFY=FALSE)(x=x,y=y,nknots=myknots)
Возвращает список, в котором каждый элементявляется smooth.spline
выходным значением для каждого значения myknots
:
> alls[[1]]
Call:
(function (x, y = NULL, w = NULL, df, spar = NULL, lambda = NULL,
cv = FALSE, all.knots = FALSE, nknots = .nknots.smspl, keep.data = TRUE,
...
Smoothing Parameter spar= 0.1318881 lambda= 0.01540768 (14 iterations)
Equivalent Degrees of Freedom (Df): 5.244268
Penalized Criterion (RSS): 984.4824
GCV: 0.99489
> alls[[2]]
Call:
(function (x, y = NULL, w = NULL, df, spar = NULL, lambda = NULL,
cv = FALSE, all.knots = FALSE, nknots = .nknots.smspl, keep.data = TRUE,
...
Smoothing Parameter spar= 0.2285265 lambda= 0.03658625 (12 iterations)
Equivalent Degrees of Freedom (Df): 5.006371
Penalized Criterion (RSS): 984.8108
GCV: 0.994746
Сохранение зависимостей до минимума является хорошей практикой.