我有一个由相同字符串组成的数据框,但是当我比较它时identical()
函数返回false?
示例:
df <- data.frame("x" = rep("a", times = 10),
"y" = rep("a", times = 10))
checkEquality <- function(x) {
y = x[1]
z = x[2]
return(identical(y, z))
}
apply(df[1:2], 1, checkEquality)
当代码返回FALSE
的向量时,此代码返回TRUE
的向量。我不知道这里发生了什么。任何帮助表示赞赏。
答案 0 :(得分:1)
这是因为它们并不完全相同。您的函数逐行获取数据框,然后比较以前的列。由于您使用单括号运算符[]
,因此您可以维护列名和行名:
x = df[1,]
x[1]
x
1 a
x[2]
y
1 a
虽然值相同,但列名称不同,因此两个向量不相同。
如果使用双括号表示法[[]]
,那么它将只提取一个元素,删除行名和列名,它应该有效:
checkEquality <- function(x) {
y = x[[1]]
z = x[[2]]
return(identical(y, z))
}
apply(df, 1, checkEquality)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
答案 1 :(得分:0)
我之前没有使用过相同的(),但你尝试过ifelse()?
ifelse(col1==col2, 'TRUE', 'FALSE')