R中的好奇副作用

时间:2013-07-08 14:11:51

标签: r functional-programming higher-order-functions

我不明白是什么让不同的案例发挥作用。 我本来希望他们能够明确地工作。

    由于某种原因,
  • funs2和funs4只关闭了n的最后一个值:它们表现得好像n总是为5。
  • funs3捕获序列的每个元素:它的行为就像n枚举从1到5,并将每个n映射到不同的函数,这将以不同的方式近似数据集(随着自由度的增加)

脚本应该直接在R中运行,除了plyr之外没有依赖。

有任何线索吗?

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)})

0 个答案:

没有答案