我正在尝试编写一个“ for”循环,该循环遍历data.table中的每一列并返回一个频率表。但是,我不断收到错误消息:
library(datasets)
data(cars)
cars <- as.data.table(cars)
for (i in names(cars)){
print(table(cars[,i]))
}
Error in `[.data.table`(cars, , i) :
j (the 2nd argument inside [...]) is a single symbol but column name 'i' is not found. Perhaps you intended DT[, ..i]. This difference to data.frame is deliberate and explained in FAQ 1.1.
当我像下面那样单独使用每列时,我没有任何问题:
> table(cars[,dist])
2 4 10 14 16 17 18 20 22 24 26 28 32 34 36 40 42 46 48 50 52 54 56 60 64 66
1 1 2 1 1 1 1 2 1 1 4 2 3 3 2 2 1 2 1 1 1 2 2 1 1 1
68 70 76 80 84 85 92 93 120
1 1 1 1 1 1 1 1 1
我的数据很大(8921483x52),这就是为什么我想使用“ for”循环并立即运行所有内容然后查看结果的原因。
我包含了汽车数据集(更易于运行)来演示我的代码。
如果将数据集转换为data.frame,则运行“ for”循环没有问题。但是我只是想知道为什么它不适用于data.table,因为我正在学习它,所以我相信它可以在大型数据集上更好地工作。
如果偶然,有人已经看到带有答案的帖子,请告诉我,因为我一直在努力寻找一个小时。