data.table() 根据列顺序给出虚假结果

data.table() gives spurious results depending on column order

提问人:Robert Hadow 提问时间:7/2/2018 最后编辑:FrankRobert Hadow 更新时间:7/3/2018 访问量:38

问:

我创建了一个十行数据帧,然后将其转换为数据表。我用不同的列顺序再次创建了它。当我将其转换为数据表时,结果是虚假的。

    c <- pi
    e <- paste("lotsa text, line", as.character(1:10))
    g <- 987654321L
    a <-  raw(length = 10)

    df <- cbind.data.frame(c, e, g, a, stringsAsFactors = FALSE)
    str(df)

    z <- c(rep(as.bigz("123456789012345678901234567890123456"), times = 10))
    df[,4] <- z
    str(df)
    dt <- data.table(df)
    str(dt)

我得到了我所期望的。Classes ‘data.table’ and 'data.frame': 10 obs. of 4 variables:

    df <- cbind.data.frame(a, c, e, g, stringsAsFactors = FALSE)
    str(df)

    df[,1] <- z
    str(df)
    dt <- data.table(df)
    str(dt)

这次我得到了一个奖励,234 额外的行:Classes ‘data.table’ and 'data.frame': 244 obs. of 4 variables:

我不确定我是否愿意相信这一系列命令。有什么替代方案?至少不会像列那样强制列。cbind.data.framecbind

r data.table gmp cbind

评论

1赞 Frank 7/2/2018
它的使用效率低下,打印效果不佳,但列表列可以容纳它:.顺便说一句,即使你有标签,通常也会将库调用写入示例中,这样人们就可以复制粘贴整个内容。data.table(a, c, e, g, z = lapply(z, list))

答: 暂无答案