R对于vs Apply,何时使用?

时间:2016-07-19 14:20:37

标签: r for-loop apply

我只是想知道何时最适合使用for循环以及何时应用更好?我已经对这个主题做了一些阅读。

我的大多数循环都是使用lapply来完成的,因为我读过的所有内容都是这样做而不是为了这样做。但是今天我写了一个for循环,对于列表中的每个名称,运行SQL(使用RODBC),列表中的名称在WHERE子句中,然后将结果保存到文件夹中。

看起来像这样(由于我的sql连接而无法重现):

for (i in df$V1){
    x <- sqlQuery(mycon, "select...")
    write.csv(x, paste0("sec/new/",i,".csv"), row.names = F)
}

然后我认为最好使用lapply所以写道:

pblapply(df$V1, function(i) {
    x <- sqlQuery(mycon, "select...")
    write.csv(x, paste0("sec/new/new/",i,".csv"), row.names = F)
  })

for循环最多需要几个小时。我使用pblapply跟踪进度,令人惊讶的是它说了5个小时。我知道我的列表以名称开头,这些名称会产生更大的结果,这样pbapply会认为实际需要的时间更长(我猜它会猜测每个我将花费相同的时间)。

我想知道某些任务是否有最佳实践。我知道apply系列对于列表,向量,矩阵等有不同的版本。是否存在for循环通常比lapply更好的情况,反之亦然?

我知道速度并不总是优先考虑的问题,但我在代码中阅读循环没有任何问题,这就是为什么他们被瞧不起这么多?同样的重复和while,我通常只是写一个for循环,做同样的事情。

提前致谢

0 个答案:

没有答案