2013-06-20 12 views
6

Warum findet die Tabellenfunktion eine Variable, die gelöscht wurde?Warum findet die Tabellenfunktion eine Variable, die gelöscht wurde?

Dog <- c("Rover", "Spot") 
Cat <- c("Scratch", "Fluffy") 

Pets <- data.frame(Dog, Cat) #create a data frame with two variables 
names(Pets) 
# [1] "Dog" "Cat" 

#rename Dog to a longer name 

names(Pets)[names(Pets)=="Dog"] <- "Dog_as_very_long_name" 
Pets$Dog <- NULL # delete Dog 
names(Pets) 
#[1] "Dog_as_very_long_name" "Cat" #the variable dog is not in the data set anymore 

table(Pets$Dog) #Why does the table function on a variable that was deleted 


# Rover Spot 
# 1  1 
+2

Sie sollten die Sprache in die Tags einfügen. Es hat keinen Platz im Titel. – christopher

Antwort

11

Dies ist einfach, weil die Teilübereinstimmung, die in bestimmten Anwendungen von $ auftritt.

Versuchen Sie folgendes:

> table(Pets$Ca) 

Fluffy Scratch 
     1  1 

Mit der [[ Notation stattdessen werden Sie mehr Kontrolle geben.

> table(Pets[["Ca"]]) 
< table of extent 0 > 
> table(Pets[["Ca", exact = FALSE]]) 

Fluffy Scratch 
     1  1 

können Sie die options Einstellungen verwenden, um eine Warnung zu geben, wenn teilweise Übereinstimmungen verwendet werden. Überlegen Sie:

> options(warnPartialMatchDollar = TRUE) 
> table(Pets$Ca) 

Fluffy Scratch 
     1  1 
Warning message: 
In Pets$Ca : partial match of 'Ca' to 'Cat' 
> table(Pets$Dog) 

Rover Spot 
    1  1 
Warning message: 
In Pets$Dog : partial match of 'Dog' to 'Dog_as_very_long_name' 
Verwandte Themen