从我在这里看到的情况来看,我假设 data.table v1.8.0+ 不会自动将字符串转换为因子。
具体来说,从该页面引用 Matthew Dowle:
不需要字符串AsFactors。在 v1.8.0 中这样做:o 字符列现在允许在键中使用,并且优先考虑。data.table() 和 setkey() 不再强制字符为因子。因素仍然得到支持。
我没有看到……这是我的 R 会话记录:
首先,我确保我有足够新的 data.table > 1.8.0 版本
> library(data.table)
data.table 1.8.8 For help type: help("data.table")
接下来,我创建一个 2x2 data.table。请注意,它会产生因子...
> m <- matrix(letters[1:4], ncol=2)
> str(data.table(m))
Classes ‘data.table’ and 'data.frame': 2 obs. of 2 variables:
$ V1: Factor w/ 2 levels "a","b": 1 2
$ V2: Factor w/ 2 levels "c","d": 1 2
- attr(*, ".internal.selfref")=<externalptr>
当我在 data.frame() 中使用 stringsAsFactors 然后调用 data.table() 时,一切都很好......
> str(data.table(data.frame(m, stringsAsFactors=FALSE)))
Classes ‘data.table’ and 'data.frame': 2 obs. of 2 variables:
$ X1: chr "a" "b"
$ X2: chr "c" "d"
- attr(*, ".internal.selfref")=<externalptr>
我错过了什么?data.frame() 是否应该将字符串转换为因子,如果是,是否有“更好的方法”来关闭该行为?
谢谢!