r - 检查变量是否在一对一映射中
问题描述
假设我有一个数据框,R
其中包含我将调用的两个变量A
和B
。我想检查这两个变量是否在一对一映射中)。例如,考虑以下数据框:
DF <- data.frame(A = c(0,2,0,1,2,1,0,1,1,1),
B = c('H','M','H','W','M','W','H','W','W','W'));
DF;
A B
1 0 H
2 2 M
3 0 H
4 1 W
5 2 M
6 1 W
7 0 H
8 1 W
9 1 W
10 1 W
A
在这个数据框中,我们可以通过检查看到和B
(与0 = H
,1 = W
和2 = M
)之间存在一一对应的关系。我想找到一种方法来使用R
不需要我检查每个元素的适当代码来为更大的数据框执行此操作。代码应该对指定变量之间是否存在一对一关系产生简单而清晰的陈述;一个简单的TRUE
/FALSE
输出应该是理想的。
解决方案
如果我们要检查 'A'、'B' 是否有重复项,请使用duplicated
frombase R
i1 <- duplicated(DF)|duplicated(DF, fromLast = TRUE)
如果all
我们需要一个TRUE/FALSE
all(i1)
#[1] TRUE
可以包装成一个函数
f1 <- function(dat) all(duplicated(dat)|duplicated(dat, fromLast = TRUE))
f1(DF)
#[1] TRUE