我创建了以下循环,但想将其编写为 lapply 函数。
这可能吗?我正在尝试了解应用函数,但还没有完全掌握它。

Decay <- function(x, decay=y) stats::filter(x, decay, method = "recursive")

d<-iris[,c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")]

DecayX <- c(0.1,0.3,0.6,0.8,0.95)
DecVars = c("Sepal.Length","Petal.Width")

for (j in DecVars){
  for (i in DecayX){
    VarName <- paste(colnames(d[j]),i*100,"DEC",sep="_")
    d[[VarName]]<-Decay(d[j],i)
  }
}

最佳答案

我看不出有任何理由在这里使用 apply 系列。

你可以使用 mapply

vars <- c(expand.grid(DecayX,DecVars,stringsAsFactors = F))
invisible(
mapply(function(x,DecV){VarName <- paste(colnames(d[DecV]),x*100,"DEC",sep="_");
                        d[[VarName]]<<-Decay(d[DecV],x)},x=vars[[1]],DecV=vars[[2]])
)

我认为在双循环的情况下,我不会使用 apply 系列。

关于R - 我可以将此循环编写为应用函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51824640/

10-11 22:33
查看更多