我有一些涉及重复销售大量具有唯一 ID 的汽车的数据。一辆车可以多次出售。
然而,有些 Id 是错误的,因此我正在检查每个 Id 的尺寸在多次销售中是否记录为相同。如果不是,那么我就知道 Id 是错误的。
我正在尝试使用以下代码来做到这一点:
library("doMC")
Data <- data.frame(ID=c(15432,67325,34623,15432,67325,34623),Size=c("Big","Med","Small","Big","Med","Big"))
compare <- function(v) all(sapply( as.list(v[-1]), FUN=function(z) {isTRUE(all.equal(z, v[1]))}))
IsGoodId = function(Id){
Sub = Data[Data$ID==Id,]
if (length(Sub[,1]) > 1){
return(compare(Sub[,"Size"]))
}else{
return(TRUE)
}
}
WhichAreGood = mclapply(unique(Data$ID),IsGoodId)
但在我的四核 i5 上,速度慢得令人痛苦、非常、非常慢。
谁能看出瓶颈在哪里吗?我是 R 优化的新手。
谢谢,
-N