虽然手动调用始终在R中有效,但功能的功能失败

时间:2016-06-14 07:10:01

标签: r function nested lapply

我有一个奇怪的问题,有点难以复制,但我会解释它的要点,希望有建议我应该在哪里寻找潜在的错误。

首先,我有一个数据帧df,我将其子集化为N个数据帧并在其上应用函数,此函数定义为:

f <- function( anydataframe ) {
    f1 <- function(df) 
    f2 <- function(f1, df)
    ...
    f10 <- function(df, f1 , f9)
    return(f10)

换句话说,我的函数依赖于其他函数,并返回一个数据框。

现在,我的initiail数据框很大,N也是如此,所以我希望能够做类似的事情

x <-  list()
for(i in 1 : 10000){
x[[i]] <- subset(df, condition i)
}

然后能够做到:

do.call(rbind,lapply(x, f) )

由于某种原因,这次失败,调查,我试图使用for循环:

y <- list()
for ( i in 1:10000) { y[[i]] <- f(x[[i]])

返回一些非常奇怪的错误,例如:

NAs are not allowed in subscripted assignment

但是,我的代码中没有NA。非常奇怪的是,当我手动运行子函数时,如下所示:

y <- list()
    for ( i in 1:10000) {
         f1(x[[i]])
         f2(f1, x[[i]])
          ...
         f10(x[[i]],f1,f9)
}

它有效,没有错误。所以问题并不在于我正在编写子函数的方式,而是当我将它们组合成一个整体函数f时,R不喜欢它。这个解决方案是不够的,因为我试图使用lapply来让它运行得更快..... help!

0 个答案:

没有答案