For循环遍历data.table中的列

时间:2019-02-23 06:19:59

标签: r data.table

我正在尝试编写一个“ 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,因为我正在学习它,所以我相信它可以在大型数据集上更好地工作。

如果偶然,有人已经看到带有答案的帖子,请告诉我,因为我一直在努力寻找一个小时。

1 个答案:

答案 0 :(得分:0)

找到了一些解决方案here

我个人的喜好是应用功能

typedef

要使循环正常工作,请调整i

Command