Эффективные построчные операции над таблицей data.table

Мне нужно найти минимум по строкам из многих (+60) относительно больших data.frame (~ 250 000 x 3) (или я могу эквивалентно работать с xts ).

set.seed(1000)
my.df <- sample(1:5, 250000*3, replace=TRUE)
dim(my.df) <- c(250000,3)
my.df <- as.data.frame(my.df)
names(my.df) <- c("A", "B", "C")

Фрейм данных my.df выглядит так

> head(my.df)

  A B C
1 2 5 2
2 4 5 5
3 1 5 3
4 4 4 3
5 3 5 5
6 1 5 3

Я пробовал

require(data.table)
my.dt <- as.data.table(my.df)

my.dt[, row.min:=0]  # without this: "Attempt to add new column(s) and set subset of rows at the same time"
system.time(
  for (i in 1:dim(my.dt)[1]) my.dt[i, row.min:= min(A, B, C)]
)

В моей системе это занимает ~ 400 секунд. Это работает, но я не уверен, что это лучший способ использовать data.table . Правильно ли я использую data.table ? Есть ли более эффективный способ выполнения простых операций по строкам?

28
задан zx8754 26 June 2019 в 10:39
поделиться