R相同对于相同的字符串返回False
我有一个由相同字符串组成的数据帧,但是当我比较它们时,R相同对于相同的字符串返回False,r,R,我有一个由相同字符串组成的数据帧,但是当我比较它们时,idential()函数返回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, ch
idential()
函数返回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)
df我以前没有用过idential(),但是你试过ifelse()吗
这是因为它们并不完全相同。函数逐行获取数据帧,然后比较前面的列。由于使用了单括号运算符[]
,因此保留了列和行名称:
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
checkEquality在转换为字符后尝试
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