data.frames的相等性,其中一列是列表

data.frames的相等性,其中一列是列表,r,dataframe,R,Dataframe,下面是一个示例,用于生成一个data.frame,其中包含一个列表列: df1 <- data.frame(x=1:3) df1$y <- list(1:2,1:3,1:4) 两者都返回 x y 1 1 1, 2 2 2 1, 2, 3 3 3 1, 2, 3, 4 我的问题:我可以检查df1和df2是否“相同”,如果是,如何检查 我尝试了all.equal(df1,df2),它给出了(很抱歉在德国安装上工作) 以及all(df1==df2

下面是一个示例,用于生成一个
data.frame
,其中包含一个列表列:

df1 <- data.frame(x=1:3)
df1$y <- list(1:2,1:3,1:4)
两者都返回

  x          y
1 1       1, 2
2 2    1, 2, 3
3 3 1, 2, 3, 4
我的问题:我可以检查
df1
df2
是否“相同”,如果是,如何检查

我尝试了
all.equal(df1,df2)
,它给出了(很抱歉在德国安装上工作)

以及
all(df1==df2)
,返回

Error in FUN(left, right) : comparison of these types is not implemented

它们不相同,这就是
idential()
正在检查的,它们有不同的类

str(df1)
'data.frame':   3 obs. of  2 variables:
 $ x: int  1 2 3
 $ y:List of 3
  ..$ : int  1 2
  ..$ : int  1 2 3
  ..$ : int  1 2 3 4
str(df2)
'data.frame':   3 obs. of  2 variables:
 $ x: int  1 2 3
 $ y:List of 3
  ..$ : int  1 2
  ..$ : int  1 2 3
  ..$ : int  1 2 3 4
  ..- attr(*, "class")= chr "AsIs"
与此类似:

> a <- 1:3
> b <- 1:3
> class(b) <- "aaa"
> a
[1] 1 2 3
> b
[1] 1 2 3
attr(,"class")
[1] "aaa"
> identical(a,b)
[1] FALSE
> a==b
[1] TRUE TRUE TRUE
>a b类(b)a
[1] 1 2 3
>b
[1] 1 2 3
属性(,“类”)
[1] “aaa”
>相同(a,b)
[1] 假的
>a==b
[1] 千真万确

所有.equal(df1,df2,check.attributes=FALSE)怎么样?是的,非常感谢!你能告诉我为什么这是离题的吗?我承认不理解“具体原因”。
Error in FUN(left, right) : comparison of these types is not implemented
str(df1)
'data.frame':   3 obs. of  2 variables:
 $ x: int  1 2 3
 $ y:List of 3
  ..$ : int  1 2
  ..$ : int  1 2 3
  ..$ : int  1 2 3 4
str(df2)
'data.frame':   3 obs. of  2 variables:
 $ x: int  1 2 3
 $ y:List of 3
  ..$ : int  1 2
  ..$ : int  1 2 3
  ..$ : int  1 2 3 4
  ..- attr(*, "class")= chr "AsIs"
> a <- 1:3
> b <- 1:3
> class(b) <- "aaa"
> a
[1] 1 2 3
> b
[1] 1 2 3
attr(,"class")
[1] "aaa"
> identical(a,b)
[1] FALSE
> a==b
[1] TRUE TRUE TRUE