Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 合并/连接data.table与合并函数不相同_R_Data.table - Fatal编程技术网

R 合并/连接data.table与合并函数不相同

R 合并/连接data.table与合并函数不相同,r,data.table,R,Data.table,我正在试图了解是否应该使用data.table或base r来合并data.tables。这两个方法产生相同数量的行和列以及相同的变量类,但是idential函数返回false。我试图理解这两种方法的不同之处 library( data.table ) a <- data.frame( id = 1:10000000, var1 = sample(letters , 10000000, replace=T ), var2 = sample(letters ,

我正在试图了解是否应该使用
data.table
或base r来合并
data.tables
。这两个方法产生相同数量的行和列以及相同的变量类,但是
idential
函数返回false。我试图理解这两种方法的不同之处

library( data.table )

a <- data.frame( 
    id = 1:10000000,
    var1 = sample(letters , 10000000,  replace=T ),
    var2 = sample(letters , 10000000,  replace=T ),
    var3= sample(letters , 10000000,  replace=T )
)

b <- data.frame( 
    id = 1:10000000,
    var4 = sample(letters , 10000000,  replace=T ),
    var5 = sample(letters , 10000000,  replace=T ),
    var6= sample(letters , 10000000,  replace=T )
)


a <- data.table( a )
b <- data.table( b )

system.time( dts <- a[b, on = .(id )] )
system.time( base <- merge( a , b, by = c("id") ) )

# returns FALSE
    identical( dts , base )

# BUT the classes and dims are the same
    sapply( dts , class  )
    sapply( base , class  )

    dim( base )
    dim( dts )
库(data.table)

base
版本有一个附加属性,名为
sorted
。如果您执行以下操作,则此属性是通过默认的
合并
行为创建的:

base <- merge( a , b, by = c("id"),sort = FALSE)

basebase
base
版本还有一个名为
sorted
的附加属性。如果您执行以下操作,则此属性是通过默认的
合并
行为创建的:

base <- merge( a , b, by = c("id"),sort = FALSE)
base