2014-01-27 2 views
13

В приведенном ниже примере, когда имена установлены в NULL, all.equal бросает 'Error: not compatible with STRSXP'
Однако, если имена установлены в NA (или другое значение), all.equal работает в нормальном режиме.
Ожидаемое поведение или ошибка?all.equal на объекте с именами NULL вызывает ошибку «Ошибка: не совместимо с STRSXP» - ошибка или ожидаемая?

## 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 
+2

Держу пари, у вас есть * * dplyr ** загружен! Я думаю, что это ошибка в методе 'all.equal.data.frame' из этого пакета, который отправляется вместо этого. – joran

+0

Обязательно запустите R без дополнительных пакетов, R -vanilla или аналогичных; сообщите о своей версии R. Это не видно для меня в разделе '> R.version.string' [1]« R В разработке (нестабильно) (2014-01-22 r64855) »или« R версии 3.0.2 »Патч (2014-01-02 r64626) « –

+0

@joran, я действительно. Спасибо, что указал мне в правильном направлении. Замена 'all.equal' на' all.equal.default' разрешила его. –

ответ

9

Как @Joran указывает, это, видимо, связано с dplyr. Поданный как вопрос: https://github.com/hadley/dplyr/issues/219

Временная работа вокруг (для моей необходимости, по крайней мере, не будет работать для всех.) Является использование

all.equal.default(x, x) 

FYI:

## 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 
Смежные вопросы