2012-10-12 12 views
28
में एक

संभव डुप्लिकेट को छोड़कर सभी स्तंभ:
Drop Columns R Data frameसूची आर

मान लीजिए कि मैं स्तंभ C1, C2, C3 के साथ एक dataframe करते हैं।

मैं सिर्फ सी 1 और सी 2 सूचीबद्ध करना चाहता हूं। मैं उसको कैसे करू?

मैं कोशिश की है:

head(data[column!="c3"]) 
head(data)[,2] 
head(data[!"c3"]) 

उत्तर

43

आप कर सकते हैं बस सूचकांक और उस स्तंभ ड्रॉप करने ऋणात्मक चिह्न का उपयोग करें:

data[,-3] 

या आप केवल पहले 2 कॉलम सूचीबद्ध कर सकते हैं:

data[,c("c1", "c2")] 
data[,1:2] 

कॉमा को न भूलें और डेटा फ्रेम का संदर्भ इस तरह काम करता है: डेटा [पंक्ति, कॉलम]

+0

आपकी अंतिम वाक्य के संबंध में, आपको डेटा फ्रेम के साथ काम करते समय वास्तव में कॉमा की आवश्यकता नहीं है, क्योंकि वे सूचियां हैं। –

+0

निश्चित रूप से, लेकिन यदि आप उस टिप्पणी को कम से कम एक उदाहरण दिखाते हैं कि अल्पविराम उर्फ ​​एक्सेसिंग सूचियों का उपयोग कैसे न करें। उदाहरण के लिए – tcash21

+0

उदाहरण के लिए 'x [1,2] '=' x [[2]] [[1]] ' – tcash21

67

यदि ओपी नाम से नकारात्मक अनुक्रमण की तलाश कर रहा है तो tcash21 की संख्यात्मक अनुक्रमण के अलावा। यहां ऐसे कुछ तरीके मैं जानता हूँ कि है, कुछ की तुलना में दूसरों का उपयोग करने के जोखिम भरा है:

mtcars[, -which(names(mtcars) == "carb")] #only works on a single column 
mtcars[, names(mtcars) != "carb"]   #only works on a single column 
mtcars[, !names(mtcars) %in% c("carb", "mpg")] 
mtcars[, -match(c("carb", "mpg"), names(mtcars))] 
mtcars2 <- mtcars; mtcars2$hp <- NULL   #lost column (risky) 


library(gdata) 
remove.vars(mtcars2, names=c("mpg", "carb"), info=TRUE) 

आम तौर पर मैं का उपयोग करें:

mtcars[, !names(mtcars) %in% c("carb", "mpg")] 

क्योंकि मुझे लगता है यह सुरक्षित और कुशल है।

+0

और mtcars पर ब्रायन रिपली की टिप्पणी के लिए http://markmail.org/message/sdg7mopk4towqbm4 देखें [, - c ("carb", "एमपीजी")] –