我创建了一个十行数据框,然后将其转换为数据表。我用不同的列顺序再次创建了它。当我将其转换为数据表时,结果是虚假的。
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
那样强制列。