2015-10-29 12 views
8

पर डेटाटेबल की पंक्ति को कनवर्ट करना मैं data.table पंक्तियों को वैक्टर में बदलना चाहता हूं। यहां मेरे लिए क्या काम किया गया है:एक वेक्टर

unlist(dt[row_num]) 

लेकिन क्या कोई और मूल समाधान है? मैं भी पसंद नहीं है कि इसके बाद के संस्करण का नाम बरकरार रखती है जब वास्तव में मैं एक शुद्ध संख्यात्मक वेक्टर के बजाय चाहते हैं, जो तब ले जाता है:

as.numeric(unlist(dt[row_num])) 

लगता है जैसे एक बेहतर विकल्प होना चाहिए।

+6

कि * 'सूची 'को' वेक्टर 'में परिवर्तित करने के लिए मूल समाधान है; 'unlist' – eddi

+0

के' use.names' तर्क को भी नोट करें, आप 'unname' के साथ नाम भी हटा सकते हैं। –

+3

मैं बॉन्डडडस्ट की पहली वाक्य से यहां सहमत हूं: http://stackoverflow.com/a/8595099/1191259 "तकनीकी रूप से सूचियां * वेक्टर हैं, हालांकि बहुत कम लोग उस शब्द का उपयोग करेंगे।" उस अर्थ में, आप 'सी (डीटी [row_num]) पर रोक सकते हैं – Frank

उत्तर

8

पंक्तियों को वैक्टर के रूप में निकालने में समस्या यह है कि वेक्टर एकरूप हैं जबकि डेटा फ्रेम या डेटा टेबल की पंक्तियां नहीं हैं।

हालांकि, अगर आप एक मैट्रिक्स के लिए डेटा परिवर्तित कर सकते हैं तो पंक्ति निकालें:

> x <- iris[1:10,1:4] 
> as.matrix(x)[1,] 
Sepal.Length Sepal.Width Petal.Length Petal.Width 
     5.1   3.5   1.4   0.2 
11

ठीक है, अब मुझे पता है तुम एक पंक्ति हैं:

as.matrix(dt[row_num])[1,] 

IMO यह पहली बार उपयोग करने के लिए बेहतर है data.table-सहयोग और पूर्ण मैट्रिक्स को पूर्ण डेटाटेबल रूपांतरित करने के लिए नहीं। बस प्रदर्शन बेहतर है (विशेष रूप से बहुत बड़े डेटा.tables पर)।