2012-02-24 101 views
0

现在,我使用列为字典映射篮球队名赢率)。不知何故,在完成处理我所拥有的数据之后,键/值映射会被切换,以使值本身正确,但键不会映射到正确的值。有没有可能导致这种情况发生的常见错误?R:列表键值映射切换

下面是一些我使用的代码,其中的CSV在名字(游戏)的信息。

games <- read.csv(game_pathname, header = FALSE) 
names(games) <- c("GameDate", "DateCount", "HomeID", "AwayID", "HomePts", "AwayPts", "HomeAbbr", "AwayAbbre", "HomeName", "AwayName") 
wins <- list() 

for (team in unique(games$HomeName)) { 
    wins[[team]] <- 0 
} 

for (i in 1:nrow(games)) { 
    if (games$HomePts[i] > games$AwayPts[i]) { 
     wins[[games$HomeName[[i]]]] <- wins[[games$HomeName[[i]]]] + 1 
    } else { 
     wins[[games$AwayName[[i]]]] <- wins[[games$AwayName[[i]]]] + 1 
    } 
} 

>str(games) 
'data.frame': 10303 obs. of 10 variables: 
$ GameDate : chr "2008-11-10" "2008-11-10" "2008-11-11" "2008-11-11" ... 
$ DateCount: int 0 0 1 1 1 2 2 2 2 3 ... 
$ HomeID : int 113 76 113 76 124 168 312 329 272 329 ... 
$ AwayID : int 98 234 234 98 204 204 233 167 160 233 ... 
$ HomePts : int 63 80 76 97 60 76 82 66 80 78 ... 
$ AwayPts : int 65 49 57 54 73 56 58 70 73 68 ... 
$ HomeAbbr : chr "ham" "dau" "ham" "dau" ... 
$ AwayAbbre: chr "gab" "paq" "paq" "gab" ... 
$ HomeName : chr "Houston" "Duke" "Houston" "Duke" ... 
$ AwayName : chr "Georgia Southern" "Presbyterian" "Presbyterian" "Georgia Southern" ... 
+3

因素的不当使用浮现在脑海。 – flodel 2012-02-24 22:38:21

+0

我不认为我在使用因素,除非它们在列表中以某种方式隐含?我基本上做的就是查找字典值并用一些简单的算术更新它们。 – user1230611 2012-02-24 22:40:53

+0

因为stringsAsFactor = TRUE的默认设置,输入数据时经常会弹出一些因子。因此,列中包含单个字符的数字数据最终会看起来像数字。同样,默认值也可以与data.frame函数一起使用。 – 2012-02-24 22:44:16

回答

0

使用

str(yourbasketballdataset) 

,以检查是否有您的数据集的任何因素。请务必检查

?relevel 
?levels 
?as.factor 

当试图了解一些因素。你是Python人吗(我的意思是自从你使用术语词典)?尽管我不明白你为什么使用列表(可能data.frame就足够了),但你可能想看看lapply来处理列表。

注意的因素不是列表中隐含的,但是当发生数据,可以很容易被解释为分类数据往往创造 - 因子仅仅是分类R项。也许,你可以尝试发布一个可重复的例子。我知道这是创造一件作品的一些工作 - 但值得一提 - 尤其是如果你是初学者。而导致它的篮球我甚至可能有内在的动力,以检查它在周日:)

+0

我在上面添加了一个代码片段。我正在做一个我们应该使用R的任务,但我很习惯用Python做事情,所以我很确定我没有这样做R方式。 – user1230611 2012-02-24 23:26:56

+0

使用子集和输入来提供您正在使用的一些数据。而没有这种可能不是最有说服力的还是在R.做到这一点最快的方式也可能会更容易弄清楚你想要什么1),说明你的话2想要什么)提供样本输出数据帧为好。如果您向我们提供可重复的示例并明确说明您希望从中获得什么,那么您很可能会得到可用的回复。如果你必须从你的代码中弄清楚它会使它变得更加困难。 – 2012-02-25 05:18:53