2012-03-25 13 views
23

raw से स्ट्रिंग द्वारा कॉलम जाओ एक data.table है और निम्नलिखित कोड काम करता है:data.table

raw[,r_responseTime] #Returns the whole column 
raw[,c_filesetSize] #Same as above, returns column 
plot(raw[,r_responseTime]~raw[,c_filesetSize]) #draws something 

अब मैं एक स्ट्रिंग से ये स्तंभ निर्दिष्ट करना चाहते हैं, तो उदाहरण के लिए:

col1="r_reponseTime" 
col2="c_filesetSize" 

स्ट्रिंग द्वारा कॉलम का संदर्भ देते समय अब ​​मैं ऊपर जैसा ही प्राप्त कर सकता हूं?

raw[,col1] #Returns the whole column 
raw[,col2] #Same as above, returns column 
plot(raw[,col1]~raw[,col2]) #draws something 

काम नहीं करता है, निश्चित रूप से क्योंकि मुझे किसी प्रकार का "dereferencation" चाहिए। मुझे नहीं पता था कि मदद और इंटरनेट में क्या खोजना है, इसलिए बेवकूफ सवाल के लिए खेद है।

+2

इसके अलावा उत्तर देने के लिए उपयोग कर सकते हैं 'कोशिश, = FALSE' साथ। इसके अलावा, एफएक्यू 1.5, 1.6 और 1.7 देखें। –

+0

'के साथ = FALSE' 'द्वारा' तर्क के साथ काम नहीं कर रहा है, इसके लिए कोई समाधान? – tlamadon

+0

खैर, असल में, तारों का एक वेक्टर 'by' तर्क में बॉक्स से बाहर काम करता है। – tlamadon

उत्तर

26

यह अच्छा होगा अगर आपने एक पुन: उत्पादित उदाहरण प्रदान किया हो, या कम से कम दिखाया गया है कि raw के कॉलम नाम क्या हैं और r_responseTime और c_filesetSize शामिल हैं। यह कहा जा रहा है, get तो अपसंदर्भन इन आजमाइए के लिए अपनी समारोह है:

raw[, get(col1)] 
raw[, get(col2)] 
plot(raw[, get(col1)] ~ raw[, get(col2)]) 
+0

धन्यवाद, सटीक रूप से मैं जो खोज रहा था! – theomega

+0

यदि मेरे पास 2 कॉलम नाम स्ट्रिंग के रूप में हैं तो मैं 'get' का उपयोग कैसे कर सकता हूं? क्षमा करें, वास्तव में 'साथ = FALSE' चाल है ... – tlamadon

+0

मानक आधार आर '[[संभवतः कॉलम नाम या संख्या' col1' में आयोजित होने पर एकल स्तंभ चयन के लिए आसान है: 'कच्चा [[col1]]' । –

7

एक वैकल्पिक match() समारोह या %in% ऑपरेटर का प्रयोग है।

raw[, match(col1, names(raw)),with=FALSE] 
+2

मैच अच्छा है। मुझे 'f = FALSE' के रूप में उपयोग करने की आवश्यकता है:' कच्चे [, मिलान (col1, नाम (कच्चे)), = FALSE] ' – dardisco

+0

धन्यवाद !! मेरे लिए बस सही है –

2

आप तार का एक वेक्टर है, तो आप mget

cols = c("r_reponseTime", "c_filesetSize") 
raw[, mget(cols)] 
संबंधित मुद्दे