2012-10-12 5 views
28

가능한 중복을 제외한 모든 열 :목록 R


Drop Columns R Data frame

이의 내가 열 C1, C2, C3와 dataframe 있다고 가정 해 봅시다.

그냥 c1과 c2를 나열하고 싶습니다. 어떻게해야합니까?

나는 시도했다 :

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

답변

43

할 수 있습니다 단지 인덱스 및 해당 열 드롭 음의 부호를 사용

data[,-3] 

을 또는 당신은 첫 번째 2 열을 나열 할 수 있습니다

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

쉼표 및 참조 데이터 프레임이 다음과 같이 작동한다는 것을 잊지 마십시오. data [row, column]

+0

마지막 문장과 관련하여 목록이므로 데이터 프레임 작업시 실제로 쉼표가 필요하지 않습니다. –

+0

물론, 그 주석을 쓰려면 적어도 목록을 액세스하는 쉼표를 사용하지 말라는 예를 보여 주어야합니다. – tcash21

+0

예를 들어'x [1,2]'='x [[2]] [[1]]' – tcash21

67

OP가 이름순으로 음수 인덱싱을 찾고있는 경우 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

그리고 Brian Ripley의 mtcars에 대한 의견은 http://markmail.org/message/sdg7mopk4towqbm4를 참조하십시오 [, - c "carb", "mpg")] –