【发布时间】:2019-06-05 23:02:10
【问题描述】:
我来自 Python 和 C++ 的背景,而 R 似乎使用了我不理解的魔法。我希望有人能给我一些关于它是如何工作的见解。
我的任务是对大约 3,400,000 个数据点的 tibble 中的每一行应用一个算法,并且来自 C++,我想迭代表并手动计算它并将其输入到 tibble 中:
add_elev <- function(all, elev){
row <- 1
while(row < nrow(all)){
adder <- filter(elev, lake_id == all[row, "lake_id"][[1]])
curr_id <- all[row, "lake_id"][[1]]
while(all[row, "lake_id"][[1]] == curr_id){
all[row, "elevation"] <- adder[1, "elevation"][[1]]
row <- row + 1
if (row > nrow(all)){
break
}
if (all[row, "lake_id"][[1]] != curr_id){
break
}
}
if (row > nrow(all)){
break
}
}
return(all)
}
该功能有效,但估计需要大约 9 小时。在查看了一些参考书之后,我发现我可以通过简单地使用“all
【问题讨论】:
-
这里发生了很多不同的事情,这意味着问题可能过于广泛。但在基本层面上,如果每个lake_id 在
all中多次出现,您只需在elev中查找一次,然后将其应用于all中的每个相关行,即可节省大量时间。跨度> -
如果你能以reproducible为榜样,你就能得到更好的答案。
标签: r