Как выполнить Hmisc::rcorr() с данными большой памяти в R?
Мне нужно выполнить
Hmisc::rcorr()
с большой памятью (этот формат требуется для различных предшествующих функций и подмножеств). Объект можно читать и загружать (
fread()
) в пределах данного ОЗУ, но
rcorr()
операция в конечном итоге не удается:
> Error: cannot allocate vector of size 1.2 Gb
Поэтому я перешел на различные пакеты для работы с большими данными в памяти. Я изначально пробовал
bigmemory
, но не смог начать с этого:
# data_DT is a data.table of ~18000 columns and ~800 rows
# rcorr requires a matrix as input
rcorr(
x = as.big.matrix(as.matrix(data_DT)),
type = "pearson"
)
#> Warning in is.na(x) :
#> is.na() applied to non-(list or vector) of type 'S4'
#> Error in SetIndivVectorElements.bm(x, i, value) :
#> Logical indices not allowed when subsetting by a matrix.
Затем я безуспешно перешел к:
# Initialise parallel processing backend via future
setup_disk.frame()
# Enable large datasets to be transferred between sessions
options(future.globals.maxSize = Inf)
# Create filebacked disk.frame
test_df <- as.disk.frame(
data_DT,
outdir = file.path(tempdir(), "test_tmp.df"),
nchunks = recommend_nchunks(data_DT, conservatism = 4),
overwrite = TRUE
)
# Correlation test
test_rcorr <- test_df %>%
as.matrix %>% # It appears to fail at this point
rcorr(type = "pearson") %>%
collect_list
#> Error in dimnames(data) <- dimnames :
#> length of 'dimnames' [1] not equal to array extent
dimnames(test_DT_df)
#> NULL
Я также пытался создать
disk.frame
после преобразования
data.table
в матрицу, но не принимает ничего, кроме
data.frame
объекты класса.
Я ценю любую предложенную помощь.