我有一个奇怪的问题,有点难以复制,但我会解释它的要点,希望有建议我应该在哪里寻找潜在的错误。
首先,我有一个数据帧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!