Как обойтись с огромным числовым вектором в т - PullRequest
0 голосов
/ 31 октября 2019

Я хочу использовать функцию, но на компьютере недостаточно оперативной памяти, чтобы сделать это с 50 тысячами записей. Я пробовал несколько способов, для уменьшения оперативной памяти нужно. При использовании некоторых пакетов в R операция уменьшается с 18Gb до 9Gb, но этого недостаточно.

Я читал, что он тратит меньше памяти, чтобы использовать расположение файла в R. Я пробовал это, он уменьшает наполовину. Но этого недостаточно. Кроме того, когда я создаю вторую проблему, функция работает только с числовым вектором. По какой-то причине числовое значение в таблице не распознается для функции. Любой другой способ ??

    library(multimode)
    sample<-as.numeric(c(1:50000))
    sample_df<-as.data.frame(sample)
    modetest(sample,mod0=2,B=2)#error cannot allocate vector of size 18Gb

Я уже пробую: 1) фред

    library(data.table)
    write.csv(sample,"D:/sample.csv")
    write.csv(sample_df,"D:/sample_df.csv")
    rissofread<- fread(file="D:/sample.csv")#error: cannort allocate
    modetest(rissofread,mod0=2,B=2)#error cannot allocate vector of size 9.3Gb

2) тиббл

    library(dplyr)
    bigfile.rawt <- as_tibble(read.csv("D:/sample.csv"))#
    bigfile.rawt_clean <- bigfile.rawt %>% mutate_if(is.integer, as.numeric)
    str(bigfile.rawt_clean[,1])
    modetest(bigfile.rawt_clean[,1],mod0=2,B=2)#error: must be numeric

3) фф

    library(ff)
    ffx <- read.csv.ffdf(file="D:/sample_df.csv", header=TRUE, 
    colClasses = c("numeric","numeric"),sep=",")
    ffx$sample<-as.numeric(ffx$sample)#code not working for that
    str(ffx$sample)
    modetest(ffx$sample,mod0=2,B=2)#

4)

    library(haven)
    path <- system.file("examples", "iris.dta", package = "haven")
    write_dta(path=path,data=sample_df,version=14)
    path_dbl<-read_dta(path)
    path_num <- path_dbl[,1] %>% mutate_if(is.double, as.numeric)
    str(path_num)#num
    modetest(path_num,mod0=2,B=2)#error: must be numeric

Я ожидал получить результаты с помощью функции. Я попытался с небольшой выборкой из 5.000 записей, и это работает. Но с окончательными данными (50.000) видно следующее сообщение. ошибка: невозможно выделить вектор размером 18Gb

...