2013-02-21 8 views
8

मान लीजिए मैं एक अनुसंधान data.table है:एक्सेस करना कॉलम स्तंभ नाम की एक चरित्र वेक्टर का उपयोग कर

DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9) 

और मैं स्तंभ नाम की एक चरित्र वेक्टर है कि मैं निकालने के लिए करना चाहते हैं, या अधिक आम तौर पर पर काम:

cols = c("x","y") 

उदाहरण के लिए, मैं कैसे कॉलम का उपयोग कर सकते के बराबर उत्पन्न करने के लिए

DT[,lapply(.SD[,list(x,y)], min) ] 

क्या कॉल वेक्टर का उपयोग कर सूची (x, y) निर्दिष्ट करने का कोई तरीका है? पूछे जाने वाले प्रश्न 1.6 के तहत

> all.equal(DT[,list(x,y)], DT[, cols, with = FALSE]) 
[1] TRUE 
> all.equal(DT[,.SD[,list(x,y)][min(v)]], DT[,.SD[,cols, with = FALSE][min(v)]]) 
[1] TRUE 

अधिक जानकारी मेरा मानना ​​है कि:

+0

इसी के लिए: http://stackoverflow.com/questions/14937165/using-dynamic-column -नाम-इन-डेटा-टेबल –

उत्तर

7

आप वैकल्पिक with = FALSE उपयोग कर सकते हैं http://datatable.r-forge.r-project.org/datatable-faq.pdf

+0

धन्यवाद! जब आप इसका जवाब दे रहे थे तो मैंने अपना प्रश्न थोड़ा बदल दिया, लेकिन समाधान अभी भी अच्छा लगता है। – DavidR

+0

एक एसएडी के अंदर = FALSE के साथ प्रयोग करना एक उपयोगी मुहावरे जैसा लगता है। यदि यह डेटा.table के लिए एक अनुशंसित दृष्टिकोण है, तो मुझे आश्चर्य है कि यह डेटा.table या उदाहरण या FAQ में होना चाहिए? @MatthewDowle – DavidR

+1

@ डेविड आर शायद 'एसडकोल्स'? डेटाटेबल देखें और "एसडीसीओल्स" के लिए इस टैग को खोजें। –

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