2012-10-02 14 views
15

मेरे पास ~ 20,000x20,000 डेटा है, मैं data.table() से matrix पर कुशलतापूर्वक गति और स्मृति के संदर्भ में कैसे परिवर्तित करूं ?आर: डेटा.table() से डेटा को कुशलतापूर्वक (गति और मेमोरी) में कनवर्ट करने के लिए कैसे करें

मैंने m = as.matrix(dt) की कोशिश की लेकिन कई चेतावनियों के साथ इसमें बहुत समय लगता है। df = data.frame(dt) बहुत लंबा लगता है और परिणामस्वरूप स्मृति सीमा तक पहुंचने में भी परिणाम मिलता है।

क्या ऐसा करने का कोई आसान तरीका है? या, बस डेटाटेबल में एक फ़ंक्शन जो dt को मैट्रिक्स फॉर्म के रूप में लौटाता है (जैसा कि glmnet पैकेज का उपयोग करके सांख्यिकीय मॉडल में फ़ीड करने के लिए आवश्यक है)?

+2

कृपया एक [पुन: उत्पादित उदाहरण] प्रदान करें (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)। –

+0

क्या आप अपना डेटा कैसा दिखते हैं इसका स्वाद दे सकते हैं ('dput (subsetofyourdata)') का उपयोग करें? जब आपने 'as.matrix' की कोशिश की तो आपने क्या चेतावनियां देखीं? – Justin

+0

क्या आप इस प्रश्न में अपनी तालिका की संरचना डाल सकते हैं? –

उत्तर

0

प्रयास करें:

result <- as.matrix(tidytext::cast_sparse(dat_table, 
    column_name_of_rows, 
    column_name_of_columns, 
    column_name_of_values)) 

यह बहुत ही कुशल और तेजी से होना चाहिए।

संबंधित मुद्दे