比较R中两个帧中的变量和循环

时间:2014-04-30 15:17:50

标签: r loops

我试图比较两个数据集中的匹配,使用相同的变量,逐个变量。使用循环,我无法完全获得变量向量的名称。以下是代码示例:

vars <- c("a", "b", "c")
x <- data.frame(a = rnorm(100), b = rnorm(100), c=rnorm(100))
y <- data.frame(a = rnorm(100), b = rnorm(100), c=rnorm(100))

for(i in 1:length(vars)){
    print(table(x$vars[i] %in% y$vars[i]))
}

任何和所有的想法都非常感激。

1 个答案:

答案 0 :(得分:3)

您无法使用data.frame和变量名称访问$的列。在您的示例中,您会在i varsdata.frame中查找x列(不存在)的y元素。正确的访问方式是[

for(i in 1:length(vars)){
    print(table(x[, vars[i]] %in% y[, vars[i]]))
}

BTW:您可以将mapply用于此目的并避免手动访问列:

mapply(function(xx, yy)table(xx %in% yy), xx=x, yy=y)