Я хочу использовать функцию, но на компьютере недостаточно оперативной памяти, чтобы сделать это с 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