我需要反连接隐式存储和循环更新的变量。这是代码:
#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"))))
那样显式声明连接列,它可以工作,但是在这种情况下,我要遍历两个表中的多个列,并在循环中更新列名。
答案 0 :(得分:0)
设法通过使用setnames来解决它:
Count_InTarget_NotInSource = append(InTarget_NotInSource, nrow(anti_join(a1, a2, by = setNames(names(a2), names(a1)))))