【发布时间】:2021-06-04 00:11:39
【问题描述】:
我正在处理大型数据集,为此我编写了一个代码来对数据帧执行逐行操作,这是顺序的。这个过程很慢。 我正在尝试使用并行处理来执行操作以使其更快。
这里是代码
library(geometry)
# Data set - a
data_a = structure(c(10.4515034409741, 15.6780890052356, 12.5581992918563,
9.19067944250871, 14.4459166666667, 11.414, 17.65325, 12.468,
11.273, 15.5945), .Dim = c(5L, 2L), .Dimnames = list(c("1", "2",
"3", "4", "5"), c("a", "b")))
# Data set - b
data_b = structure(c(10.4515034409741, 15.6780890052356, 12.5581992918563,
9.19067944250871, 14.4459166666667, 11.3318076923077, 13.132273830156,
6.16003995082975, 11.59114820435, 10.9573192090395, 11.414, 17.65325,
12.468, 11.273, 15.5945, 11.5245, 12.0249, 6.3186, 13.744, 11.0921), .Dim = c(10L,
2L), .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), c("a",
"b")))
conv_hull_1 <- convhulln( data_a, options = "FA") # Draw Convex Hull
test = c()
for (i in 1:nrow(data_b)){
df = c()
con_hull_all <- inhulln(conv_hull_1, matrix(data_b[i,], ncol = 2))
df$flag <- ifelse(con_hull_all[1] == TRUE , 0 , ifelse(con_hull_all[1] == FALSE , 1, 2))
test <- as.data.frame(rbind(test, df))
print(i)
}
test
有没有办法并行化逐行计算?
如您所见,对于小型数据集,计算时间确实很短,但是一旦我增加数据大小,计算时间就会急剧增加。
您能否提供代码解决方案。 提前致谢。
【问题讨论】:
-
努力制作完全可重复的示例。这些应该包含查看问题的所有代码。
inhulln和convhulln这两个函数从何而来? -
@AndrewChisholm,对不起,我编辑了这个问题。你有什么解决办法吗?
标签: r parallel-processing rstudio convex-hull extrapolation