さまざまなケースが機能するかどうかがわかりません。私はそれらがすべて明らかに機能することを期待していたでしょう。
- funs2 と funs4 は、何らかの理由で n の最後の値でのみ終了します。これらは、n が常に 5 であるかのように動作します。
- funs3 はシーケンスの各要素をキャプチャします: n が 1 から 5 まで列挙され、n ごとに別の関数にマッピングされているかのように動作し、データセットを異なる方法で近似します (自由度が高くなります)。
スクリプトは、plyr 以外に依存することなく、R で直接実行できる必要があります。
どんな手掛かり ?
library(plyr)
f <- function (x) { sin(2*pi*x) }
fnoisy <- function (x) {f(x) + 0.3*rnorm(1)}
x10 <- runif(10)
y10 <- aaply(x10,1,fnoisy)
curve(f,0,1,col="blue", ylim=c(-1.5,1.5))
points(x10, y10, col="red")
vdm <- function(x,n) outer( x, seq(0,n-1), "^" )
fitted <- function (n) { function(xtrain,ytrain) { w <- qr.solve(vdm(xtrain,n), ytrain)
function (x) { vdm(x,n) %*% w} } }
funs2 <- lapply(seq_len(5), function(n) {fitted(n)}) #does not work
funs3 <- lapply(seq_len(5), function(n) {print(n);fitted(n)}) #works
funs4 <- lapply(seq_len(5), fitted ) #does not work
lapply(funs3, function(f) {ffitted <- f(x10,y10)
curve(ffitted,0,1,col="black", add=TRUE)})