2012-10-12 7 views

Odpowiedz

43

Można tylko indeks i wykorzystywać znak ujemny upuścić tę kolumnę:

data[,-3] 

Albo można wymienić tylko pierwsze 2 kolumny:

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

Nie zapomnij o tym, że ramki danych zawierające przecinki i odniesienia działają w następujący sposób: dane [wiersz, kolumna]

+0

Jeśli chodzi o ostatnie zdanie, w rzeczywistości nie potrzebujesz przecinka podczas pracy z ramkami danych, ponieważ są to listy. –

+0

Oczywiście, ale jeśli masz zamiar zrobić ten komentarz, pokaż przynajmniej przykład, jak nie używać przecinków, które mają uzyskiwać dostęp do list. – tcash21

+0

na przykład 'x [1,2]' = 'x [[2]] [[1]]' – tcash21

67

Oprócz indeksowania tcash21, jeśli OP mógł szukać negatywnego indeksowania według nazwy. Oto kilka sposobów, co wiem, niektóre z nich są ryzykowne niż inni użyć:

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) 

Generalnie używam:

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

bo czuję, że to bezpieczny i skuteczny.

+0

Zobacz też http://markmail.org/message/sdg7mopk4towqbm4 dla komentarza Briana Ripleya do mtcars [, - c ("carb", "mpg")] –

Powiązane problemy