2014-01-27 27 views
13

在下面的例子中,當名稱被設置爲NULLall.equal拋出'Error: not compatible with STRSXP'
然而,如果名稱被設置爲NA(或一些其它值),all.equal作品爲正常。
這是預期的行爲還是錯誤?具有NULL名稱的對象上的all.equal會導致'錯誤:與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開發中(unstable)(2014-01-22 r64855)」或者「R version 3.0.2 Patched(2014-01-02)r64626 )「 –

+0

@joran,我確實。感謝您指點我正確的方向。用'all.equal.default'代替'all.equal'解決了它。 –

回答

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 
相關問題