data.table определенно намного быстрее и эффективнее, чем стандартный класс data.frame
. Вы можете использовать бинарный поиск, чтобы достичь того, что вы имеете в виду.
Ниже я использую набор данных iris
, чтобы показать вам, как он работает.
library(data.table)
data("iris")
setDT(iris)
set.seed(1970)
iris[ , test := sample(rep( c(TRUE, FALSE), times = nrow(iris)), nrow(iris)) ]
setkey(iris, test)
iris_true = iris[ .(TRUE) ]
iris_false = iris[ .(FALSE) ]
Создано в 2020-05-03 пакетом prex (v0.3.0)
Вы можете достичь того же самого с помощью :
iris_true = iris[ test == TRUE ]
iris_false = iris[ test == FALSE ]
Помните, что первый метод намного эффективнее и быстрее.
Если позволите, я бы посоветовал вам инвестировать в обучение data.table , отличный пакет с очень четким синтаксисом.
Надеюсь, это помогло.