Я проверил другие вопросы, но ни один из них, похоже, не относится к моей проблеме с data.table
.
Это кажется достаточно простой проблемой: у меня есть матрица данных, и я просто хочу вычислить среднее для каждого столбца, агрегирование с использованием другого столбца, и я хочу явно использовать data.table
.
У меня есть следующая матрица:
> datam <- cbind(matrix(rexp(100), 10), IN=c(rep(1,2), rep(2,3), rep(3,2), rep(4,1), rep(5,2)))
> datam
IN
[1,] 0.20650931 0.6997571 0.97464213 0.60447629 1.58775119 0.95589192 0.06428668 0.63871505 1.9710147 1.47914062 1
[2,] 1.13443868 0.1452056 0.12636405 1.27150736 0.22075150 1.14576889 2.42279821 0.27011710 1.1154945 0.01105555 1
[3,] 0.14441902 1.9815460 0.44642791 0.30314789 0.86700105 0.08443948 0.11991152 0.87640052 0.5047499 0.29289425 2
[4,] 2.77837206 0.5182024 0.01790841 1.93901641 0.06103524 1.41916299 0.22346853 1.01386631 4.4132946 1.22985369 2
[5,] 0.34792681 0.1992605 0.52433916 0.77726244 3.52407696 1.20707416 0.61440217 1.17350349 1.1507378 0.10822862 2
[6,] 0.04152492 3.0030461 0.63160154 0.58567018 1.40882345 0.64502956 0.09270774 0.48659474 2.1546318 0.60766586 3
[7,] 0.60525099 0.2917629 1.83211987 1.14103166 0.44245533 0.17263702 0.12986408 0.06746046 0.1737246 2.15982163 3
[8,] 0.58719066 0.8218078 2.62051296 1.14004448 0.28344820 2.19568102 0.16395865 0.30511205 1.0641123 1.71593894 4
[9,] 0.15103229 0.2349367 0.68708366 0.04129689 0.45221114 0.39821837 1.02286218 0.59763803 0.8831383 0.03271210 5
[10,] 0.26633984 0.9035208 0.27722630 0.36636195 0.87703820 1.49207955 0.05097381 1.16625317 0.3791779 0.26460207 5
Я хочу среднее значение для столбца на основе группировки по последнему столбцу IN
, для которого я использую data.table
следующим образом:
> dd <- data.table(datam)
> dd[, lapply(.SD, mean), by=IN]
Error in .subset(x, j) : invalid subscript type 'list'
Вы видите выше полученную мной ошибку:
Ошибка в .subset ( x, j): неверный тип индекса 'list'
Что я делаю не так и как решить эту ошибку? Я использовал эту команду data.table
много раз раньше и никогда не доставлял мне проблем, разве data.table
изменил свой синтаксис или что-то в этом роде?
Большое спасибо!