提问人:Robert Hadow 提问时间:7/2/2018 最后编辑:FrankRobert Hadow 更新时间:7/3/2018 访问量:38
data.table() 根据列顺序给出虚假结果
data.table() gives spurious results depending on column order
问:
我创建了一个十行数据帧,然后将其转换为数据表。我用不同的列顺序再次创建了它。当我将其转换为数据表时,结果是虚假的。
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.frame
cbind
答: 暂无答案
评论
data.table(a, c, e, g, z = lapply(z, list))