相关疑难解决方法(0)

加速R中的循环操作

我在R中遇到了很大的性能问题.我编写了一个迭代data.frame对象的函数.它只是添加一个新列data.frame并积累一些东西.(操作简单).将data.frame有大约850K行.我的电脑仍在工作(现在大约10小时),我不知道运行时间.

dayloop2 <- function(temp){
    for (i in 1:nrow(temp)){    
        temp[i,10] <- i
        if (i > 1) {             
            if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) { 
                temp[i,10] <- temp[i,9] + temp[i-1,10]                    
            } else {
                temp[i,10] <- temp[i,9]                                    
            }
        } else {
            temp[i,10] <- temp[i,9]
        }
    }
    names(temp)[names(temp) == "V10"] <- "Kumm."
    return(temp)
}
Run Code Online (Sandbox Code Playgroud)

有什么想法如何加快这个操作?

performance loops r rcpp r-faq

182
推荐指数
7
解决办法
8万
查看次数

R是否适用于家庭而不是语法糖?

......关于执行时间和/或记忆.

如果不是这样,请使用代码段进行证明.请注意,矢量化的加速不计算在内.增速必须来自apply(tapply,sapply,...)本身.

r apply

146
推荐指数
5
解决办法
2万
查看次数

"应用"功能有哪些优点?它们什么时候比"for"循环更好用,什么时候不用?

可能重复:
R是否适用于家庭而不是语法糖

正如标题所说的那样.也许是个愚蠢的问题,但我的理解是,当使用"apply"函数时,迭代是在编译代码中而不是在R解析器中执行的.例如,如果存在大量迭代并且每个操作相对简单,那么这似乎意味着lapply仅比"for"循环更快.例如,如果对lapply中包含的函数的单个调用需要10秒,而且只有12次迭代,我会想到使用"for"和"lapply"之间几乎没有任何区别.

既然我想到了,如果必须解析"lapply"中的函数,为什么使用"lapply"而不是"for"会有任何性能上的好处,除非你正在做一些有编译函数的东西(如总结或乘法等)?

提前致谢!

玩笑

parsing for-loop r compilation lapply

8
推荐指数
1
解决办法
1308
查看次数

标签 统计

r ×3

apply ×1

compilation ×1

for-loop ×1

lapply ×1

loops ×1

parsing ×1

performance ×1

r-faq ×1

rcpp ×1