【发布时间】:2020-08-01 00:23:19
【问题描述】:
我需要将每人 1 行的数据表扩展为每人可变行的数据表。我知道每个人的确切行数。我一直遇到关于不回收我提供的向量的错误(见下文)。
我似乎不知道如何暂时关闭此功能,或者如何解决它。
示例:
x <- data.table(a = 1:5, b = letters[1:5])
x[, c := 1:a, by = b]
给我下面的错误
Error in `[.data.table`(x, , `:=`(c, 1:a), by = b) : Supplied 2 items to be assigned to group 2 of size 1 in column 'c'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code.
似乎应该允许rep()以外的其他功能。但即使我将其包装在 rep() 中,它似乎也无济于事。
x[, c := rep(1:a, times = 1), by = b]
给出同样的错误。
对于价值,我想要第1行的1个副本,第2行的2个副本,第3行的3个副本等。在实际用例中,要添加的行数(由a列表示) 是基于对一个人的预期行的计算(由 b 列表示)。
是否有一种对 data.table 友好的方式来执行此操作? 提前致谢。
【问题讨论】:
标签: r data.table