具有NULL名称的对象上的all.equal导致'错误:与STRSXP不兼容' - 错误或预期?

时间:2014-01-27 20:34:19

标签: r dplyr

在下面的示例中,当名称设置为NULL时,all.equal会引发'Error: not compatible with STRSXP'
但是,如果名称设置为NA(或其他一些值),all.equal将正常工作 这是预期的行为还是错误?

## SAMPLE DATA
set.seed(1)
x <- data.frame(LETTERS[1:3], rnorm(3))
names(x) <- NULL

x
#   NA        NA
# 1  A -0.626454
# 2  B  0.183643
# 3  C -0.835629

all.equal(x, x)
# Error: not compatible with STRSXP

# add names back in, even 'NA'
names(x) <- c(NA, NA)
all.equal(x, x)
# [1] TRUE

1 个答案:

答案 0 :(得分:10)

@Joran指出,这似乎与dplyr有关。 归档为问题:https://github.com/hadley/dplyr/issues/219

临时工作(至少我需要。不适用于所有人)是使用

 all.equal.default(x, x)

仅供参考:

  ## STARTING FROM A FRESH SESSION:

  set.seed(1)
  x <- data.frame(LETTERS[1:3], rnorm(3))
  names(x) <- NULL

  all.equal(x, x)
  # [1] TRUE

  ## Load in dplyr
  library(dplyr)
  all.equal(x, x)
  # Error: not compatible with STRSXP