head()函数将所有结果附加到末尾

时间:2018-11-18 12:35:13

标签: r sorting dataset

我正在尝试学习R,但是遇到了一些(对我而言)意想不到的行为。我有4000个imdb电影的数据集。并希望按收视率和预算来排序前5名电影。我使用以下方法将此数据绑定到datsort

datsort <- arrange(dat, desc(imdb_score), budget)

然后获得使用标题按标题排序的前5个结果 head(datsort$movie_title,n=5)  基本上可以返回我的期望。

我得到的总返回数据是

[1] Towering Inferno             
[2] The Shawshank Redemption     
[3] The Godfather                
[4] Kickboxer: Vengeance         
[5] Dekalog                      
3928 Levels: #Horror  [Rec] 2  [Rec]  ... Zulu

不过,前5名电影的列表后面是:

3928 Levels: #Horror  [Rec] 2  [Rec]  ... Zulu

这似乎完全无关,因为它只是电影的完整列表,按字母顺序排序

我期望的只是

[1] Towering Inferno             
[2] The Shawshank Redemption     
[3] The Godfather                
[4] Kickboxer: Vengeance         
[5] Dekalog                      

从阅读文档和示例中,我从未见过附加的总列表。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

正如其他人所暗示的那样,您的movie_title列已存储为一个因素。一个快速的解决方案是运行以​​下操作,该操作将在您的head调用之前将您的列转换为字符。反过来,打印方法不会显示所有级别。

 datsort$movie_title <- as.character(datsort$movie_title)

 head(datsort$movie_title,n=5)
 #[1] Towering Inferno             
 #[2] The Shawshank Redemption     
 #[3] The Godfather                
 #[4] Kickboxer: Vengeance         
 #[5] Dekalog

更好的是,当您读数据(或创建data.frame)时,请使用stringsAsFactors=FALSE,如@phiver在注释中建议的那样。