2012-05-14 11 views
5

आर पैकेज डेटा के बारे में प्रश्न। डेटा: स्मृति-कुशल तरीके से एकाधिक डेटाटेबल कॉलम कैसे हटाए जाते हैं?आर: डेटा.table में कॉलम कैसे हटाएं?

मान लीजिए कि कॉलम नाम हटाए जाने के लिए वेक्टर deleteCol में संग्रहीत हैं।

In a data.frame, it is: 
DF <- DF[deleteCol] <- list() 

data.table के लिए, मैं करने की कोशिश की:

DT[, deleteCol, with=FALSE] <- list() 

लेकिन यह दिया unused argument(s) (with = FALSE)

धन्यवाद!

उत्तर

5

ठीक है यहां कुछ विकल्प हैं। पिछले एक वास्तव में लगता है कि आप क्या चाहते हैं ...

x<-1:5 
y<-1:5 
z<-1:5 
xy<-data.table(x,y,z) 
NEWxy<-subset(xy, select = -c(x,y)) #removes column x and y 

और

id<-c("x","y") 
newxy<-xy[, id, with=FALSE] 
newxy #gives just x and y e.g. 

    # x y 
#[1,] 1 1 
#[2,] 2 2 
#[3,] 3 3 
#[4,] 4 4 
#[5,] 5 5 

और अंत में आप वास्तव में क्या चाहते हैं:

anotherxy<-xy[,id:=NULL,with=FALSE] # removes comuns x and y that are in id 

#  z 
#[1,] 1 
#[2,] 2 
#[3,] 3 
#[4,] 4 
#[5,] 5 
+0

यही काम कर देता है! धन्यवाद! –

+4

+1। यद्यपि 'anotherxy <-' के लिए कोई ज़रूरत नहीं है। ': = 'संदर्भ द्वारा' xy' संशोधित करता है। यदि आप एक संशोधित प्रतिलिपि चाहते हैं तो आपको स्पष्ट रूप से 'कॉपी() 'करना होगा; उदाहरण के लिए, 'anotherxy <- copy (xy) [, id: = NULL, = FALSE के साथ] '। –

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