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