在循环中联接存储的变量

时间:2018-10-09 02:39:32

标签: r loops join

我需要反连接隐式存储和循环更新的变量。这是代码:

    #initialize vectors
SourceColumn = NULL
TargetColumn = NULL
InSource_NotInTarget = NULL
InTarget_NotInSource = NULL
CountNASource = NULL
CountNATarget = NULL
Count_Source_Total_Rows = NULL
Count_Target_Total_Rows = NULL
Count_Source_Unique_Rows = NULL
Count_Target_Unique_Rows = NULL
SourceRowType = NULL
TargetRowType = NULL

for (i in names(nmMappingLOAD_CC_C_PROJECT_CONFIG)){
  a1Ind = paste(i)
  a2Ind = paste(nmMappingLOAD_CC_C_PROJECT_CONFIG[i])


  #DB data(Target)
  a1 = adhocTibl[a1Ind]
  #Excel data(Source)
  a2 = excelData[a2Ind]

  #Build col vectors

  #fails here
  Count_InTarget_NotInSource = append(InTarget_NotInSource, nrow(anti_join(a1, a2, by = c(names(a1) = names(a2)))))
  Count_InSource_NotInTarget = append(InSource_NotInTarget, nrow(anti_join(a2, a1, by = c("PROJECT_ID"="PROJECT_CONFIG_ID"))))


}

这里失败Count_InTarget_NotInSource = append(InTarget_NotInSource, nrow(anti_join(a1, a2, by = c(names(a1) = names(a2)))))

错误Error: Error: unexpected '}' in "}"

我可以像by = c("PROJECT_CONFIG_ID"="PROJECT_ID"))))那样显式声明连接列,它可以工作,但是在这种情况下,我要遍历两个表中的多个列,并在循环中更新列名。

1 个答案:

答案 0 :(得分:0)

设法通过使用setnames来解决它:

  Count_InTarget_NotInSource = append(InTarget_NotInSource, nrow(anti_join(a1, a2, by = setNames(names(a2), names(a1)))))