【发布时间】:2016-09-30 08:35:59
【问题描述】:
我读过一些关于在 r 中提高 for 循环性能的文章,但我仍然坚持使用大约 140 秒的循环。
我将从代码开始:
matrix <- matrix(NA, length(register[,1]), length(AK), dimnames = list(register[,1], AK))
data.cleaned <- data[data$FO %in% register[,1],]
rownames(data.cleaned) <- paste(1:nrow(data.cleaned))
for (i in 1 : nrow(data.cleaned)) {
for (j in 1 : nrow(matrix)) {
if (data.cleaned$FO[i] == rownames(matrix)[j]) {
for (k in 1 : ncol(matrix)) {
if (data.cleaned$AK[i] == colnames(matrix)[k])
{matrix[j,k] <- 1}
}
}
}
}
很遗憾,我无法提供任何可重现的示例。该 data.cleaned 数据帧是帧,其中包括大约 11000 行。在每一行中,对于 FO(主类别)和 AK(FO 的子类别)(两个不同的变量)都有一个观察值。
如果一行中有相应的 FO 和 AK 观测值,则目标是用 1 填充矩阵[i,j]。
这有意义吗。也请评论,如果我需要指定或可以以更清晰/更好的方式写帖子
【问题讨论】:
-
For 循环本身在 R 中的性能不是很好,尝试用矢量化函数等替换尽可能多的循环。
-
我的答案中的代码需要多少秒才能处理您的数据?
标签: r performance for-loop