Мне нужно расширить таблицу данных с одной строки на человека до одной с переменными строками на человека. Я знаю точное количество строк для каждого человека. Я все время сталкиваюсь с ошибкой из-за того, что не перерабатываю вектор, который я поставляю (см. Ниже).
Кажется, я не могу понять, как временно отключить эту функцию или как ее обойти.
пример:
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 и т.д. c. В фактическом варианте использования количество добавляемых строк (представленное столбцом a) основано на вычислении ожидаемых строк для человека (представленного столбцом b).
Существует ли таблица data.table дружественный способ сделать это? Заранее спасибо.