首页 > 解决方案 > R foreach循环,添加if语句后无法绑定

问题描述

我正在尝试使用带有 if else 语句的 foreach 循环来绑定多个数据帧。在添加 if else 语句之前,dataframe 能够 rbind 并顺利运行。但是添加if else语句后,结果表(M_test)变为NULL,但foreach循环完全运行,没有任何错误。

system.time(
  M_test <- foreach(h = 1:50, .combine=rbind, .packages="data.table") %dopar% {

# Convert datafram to vector by row
v_items <- temp2[h,]

# Remove blank & NA
v_items <- v_items[v_items != "NA"]
v_items <- v_items[v_items != ""]

rules <- arules::apriori(trans,parameter=list(supp=0.001,conf=0.1, target = "rules", minlen=2),
               appearance=list(lhs=c(as.character(v_items)),default="rhs"))


if(length(rules)!=0){
rules_df <- arules::DATAFRAME(rules)

data.table(
  Key=T_test[h,1],
  LHS=rules_df$LHS,
  RHS=rules_df$RHS,
  support=rules_df$support,
  confidence=rules_df$confidence,
  lift=rules_df$lift,
  count=rules_df$count
)}
else{
rules_df <- data.frame(LHS=as.character("NA"),
                       RHS=as.character("NA"),
                       support=as.numeric(0),
                       confidence=as.numeric(0),
                       lift=as.numeric(0),
                       count=as.numeric(0))

data.table(
  Key=T_test[h,1],
  LHS=rules_df$LHS,
  RHS=rules_df$RHS,
  support=rules_df$support,
  confidence=rules_df$confidence,
  lift=rules_df$lift,
  count=rules_df$count
)
} 
}
)

标签: rif-statementparallel-foreach

解决方案


推荐阅读