r - 在 R 中,此警告消息“已回收剩余部分”是什么意思?

标签 r dplyr data.table

警告消息: 在 as.data.table.list(x, keep.rownames = keep.rownames, check.names = check.names, 中: 第 2 项有 1650197 行,但最长的项有 1667524 行;剩余物回收。

最佳答案

当给 R 某种形式的列表输入以生成某种形式的列表输出但输入长度和输出长度不匹配时,会出现此警告。在这些情况下,R 会根据需要重复并重用较短的列表。

请参阅文档 here :“如果提供了列表,则每个元素都会转换为 data.table 中的一列,并自动回收较短的元素。”

但是,如果较长列表不是较短列表长度的倍数,则长度列表的差异不太可能是故意的,因此会出现此警告。

一些例子:

> library(data.table)
> example1 = list(x = c(1,2,3,4,5,6), y = 3)
> as.data.table(example1)
   x y
1: 1 3
2: 2 3
3: 3 3
4: 4 3
5: 5 3
6: 6 3

> example2 = list(x = c(1,2,3,4,5,6), y = c('a','b'))
> as.data.table(example2)
   x y
1: 1 a
2: 2 b
3: 3 a
4: 4 b
5: 5 a
6: 6 b

在这两个示例中,xy 列表的长度不同,因此 y 列表已重复。这不会产生警告,因为 y 的长度为 1 或 2,是长度为 6 的 x 的倍数。

> example3 = list(x = c(1,2,3,4,5,6), y = c('a','b','c','d'))
> as.data.table(example3)
   x y
1: 1 a
2: 2 b
3: 3 c
4: 4 d
5: 5 a
6: 6 b
Warning message:
In as.data.table.list(example3) :
  Item 2 has 4 rows but longest item has 6; recycled with remainder.

但是这个例子中x的长度是6,y的长度是4。所以在创建时只重复了y的前两项数据表。 R 会发出警告,因为 y 中的每个术语并未重复使用相同的次数。

在您的示例中,您的列不是长度 6 和 4,而是长度为 1650197 和 1667524。由于您不太可能(但有可能)想要重复较短列的前 17327 个条目(1667524 - 1650197),因此 R向您发出警告,提示您检查输入列。

关于r - 在 R 中,此警告消息“已回收剩余部分”是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64918314/

相关文章:

r - R 编程中 datenum 的等价物

r - 为什么函数的 dplyr::mutate 只影响第一行而不影响其余行

r - 超过 n 个数字列中具有重复值的数据帧的平均行数

r - 匹配变量后,仅将一个变量从一个 R data.table 复制到另一个

r - 在 R 中一次生成多个频率表

R 从列表中删除子列表中的项目

通过 R data.table 中的变量保留 by-without-by

r - R中数据表中行的几何平均值

r - 如何创建具有负轴和正轴的散点图?

r - 根据id和date-R合并数据集