Ho un grande frame di dati che richiede circa 900 MB di RAM. Poi ho provato a modificarlo in questo modo:Memoria insufficiente durante la modifica di un grande R data.frame
dataframe[[17]][37544]=0
Sembra che rende R utilizzando più di 3G RAM e R lamenta: (. Io sono su una macchina a 32 bit) "Errore non può allocare vettore di dimensione 3,0 Mb",
ho trovato in questo modo è meglio:
dataframe[37544, 17]=0
ma l'impronta di R ancora raddoppiato e il comando richiede un po 'di tempo per l'esecuzione.
Da uno sfondo C/C++, sono davvero confuso da questo comportamento. Ho pensato che qualcosa come dataframe[37544, 17]=0
dovrebbe essere completato in un batter d'occhio senza costi aggiuntivi di memoria (solo una cella dovrebbe essere modificata). Cosa sta facendo R per quei comandi che ho postato? Qual è il modo giusto per modificare alcuni elementi in un frame di dati, quindi senza raddoppiare l'impronta di memoria?
Grazie mille per il vostro aiuto!
Tao
(Base) R è notoriamente non spettacolare nella gestione di strutture di dati di grandi dimensioni. Ti consigliamo di esaminare una combinazione dei pacchetti ** ff **, ** bigmemory ** e ** data.table **. – joran
Questo non è proprio vero: i dataframes sono notoriamente inefficienti, ma ci sono strutture molto efficienti in (base) R che dovresti usare invece se ti preoccupi dell'efficienza. –
@SimonUrbanek Sì, ho detto così male. Intendevo solo esattamente quello che hai detto, che i frame di dati tendono ad essere inefficienti e che i pacchetti che ho menzionato possono spesso essere utili per le persone che si occupano di dati di grandi dimensioni. – joran