使用dplyr连接数据时,请参阅for循环中的变量

使用dplyr连接数据时,请参阅for循环中的变量,r,dplyr,R,Dplyr,在遍历列和创建表时,我想检查一些表是否有不同的行数,并使它们相等。虽然我通常会发布一个可复制的示例,但这个示例相当长,因此我将首先尝试提出这个问题。当变量在for循环中被索引时,如何在anti_join的“by”参数中输入列名 例如: for(i in seq_along(columns)) { # make tables # find rows in table1 not in table2 dplyr::anti_join(table1, table2, **by=columns[i]**

在遍历列和创建表时,我想检查一些表是否有不同的行数,并使它们相等。虽然我通常会发布一个可复制的示例,但这个示例相当长,因此我将首先尝试提出这个问题。当变量在for循环中被索引时,如何在anti_join的“by”参数中输入列名

例如:

for(i in seq_along(columns)) {
# make tables 
# find rows in table1 not in table2
dplyr::anti_join(table1, table2, **by=columns[i]**)
}

如果没有示例,很难判断逻辑是否正确,但是您应该能够通过使用
名称(df_name[,columns])[i]
(假设您使用
seq_沿着
索引
for loop
)来引用
中的列。例如,这意味着:

for(i in seq_along(columns)) {
  dplyr::anti_join(table1, table2, by = names(table1[,columns])[i])
}
如果
columns
包含作为字符串的变量名,则还可以简化循环:

for (i in columns){ 
  dplyr::anti_join(table1, table2, by = i)
}

请注意,这假设
by
变量在两个表(
data.frame
s)中具有相同的名称。

假设
具有公共列,这些列出现在
表1
表2
中,则可以将结果存储在列表中

columns <- intersect(names(table1), names(table2))
result <- vector('list', length(columns))

for(i in seq_along(columns)) {
  result[[i]] <- dplyr::anti_join(table1, table2, by=columns[i])
}

取决于
列的内容的
列。如果它是列名的字符向量,那么我认为您的代码将按原样工作。