Как выполнить 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 объекты класса.

Я ценю любую предложенную помощь.

0 ответов

Другие вопросы по тегам