seq_len中的错误(nrow(data) - 1):参数必须可强制化为ggplot2 map

时间:2017-07-14 16:04:28

标签: r dictionary ggplot2

有人可以帮帮我吗? 我正在使用此来源:https://github.com/wmurphyrd/fiftystater

devtools::install_github("wmurphyrd/fiftystater")
library(fiftystater)
library(ggplot2)

data("fifty_states") # this line is optional due to lazy data loading
december <- read.csv("test.Dec.csv", header = TRUE)
head(december)
           State Mean.of.median.housing  X X.1 X.2 X.3 X.4 X.5
1         Alabama              128604.11 NA  NA  NA  NA  NA  NA
2          Alaska                     NA NA  NA  NA  NA  NA  NA
3         Arizona              199831.35 NA  NA  NA  NA  NA  NA
4        Arkansas              107573.94 NA  NA  NA  NA  NA  NA
5      California              443727.60 NA  NA  NA  NA  NA  NA
6        Colorado              238422.24 NA  NA  NA  NA  NA  NA
7     Connecticut              286932.25 NA  NA  NA  NA  NA  NA
8        Delaware              176772.28 NA  NA  NA  NA  NA  NA
9         Florida              201340.36 NA  NA  NA  NA  NA  NA
10        Georgia              151471.39 NA  NA  NA  NA  NA  NA
11         Hawaii              462844.24 NA  NA  NA  NA  NA  NA
12          Idaho              151015.16 NA  NA  NA  NA  NA  NA
13       Illinois              212096.73 NA  NA  NA  NA  NA  NA
14        Indiana              100004.84 NA  NA  NA  NA  NA  NA
15           Iowa              145490.91 NA  NA  NA  NA  NA  NA
16         Kansas              130308.77 NA  NA  NA  NA  NA  NA
17       Kentucky              135243.13 NA  NA  NA  NA  NA  NA
18      Louisiana              119259.02 NA  NA  NA  NA  NA  NA
19          Maine                     NA NA  NA  NA  NA  NA  NA
20       Maryland              266604.41 NA  NA  NA  NA  NA  NA
21  Massachusetts              316337.88 NA  NA  NA  NA  NA  NA
22       Michigan              152591.44 NA  NA  NA  NA  NA  NA
23      Minnesota              219975.79 NA  NA  NA  NA  NA  NA
24    Mississippi               90238.10 NA  NA  NA  NA  NA  NA
25       Missouri              162622.49 NA  NA  NA  NA  NA  NA
26        Montana                     NA NA  NA  NA  NA  NA  NA
27       Nebraska              129369.15 NA  NA  NA  NA  NA  NA
28         Nevada              217827.56 NA  NA  NA  NA  NA  NA
29  New Hampshire              207974.68 NA  NA  NA  NA  NA  NA
30     New Jersey              311639.37 NA  NA  NA  NA  NA  NA
31     New Mexico              181346.86 NA  NA  NA  NA  NA  NA
32       New York              224106.12 NA  NA  NA  NA  NA  NA
33 North Carolina              163972.77 NA  NA  NA  NA  NA  NA
34  North Dakota                      NA NA  NA  NA  NA  NA  NA
35           Ohio              121977.38 NA  NA  NA  NA  NA  NA
36       Oklahoma              110820.16 NA  NA  NA  NA  NA  NA
37         Oregon              209567.20 NA  NA  NA  NA  NA  NA
38   Pennsylvania              163647.28 NA  NA  NA  NA  NA  NA
39   Rhode Island              230743.79 NA  NA  NA  NA  NA  NA
40 South Carolina              127012.49 NA  NA  NA  NA  NA  NA
41   South Dakota                     NA NA  NA  NA  NA  NA  NA
42      Tennessee              111790.22 NA  NA  NA  NA  NA  NA
43          Texas              123364.33 NA  NA  NA  NA  NA  NA
44           Utah              207881.14 NA  NA  NA  NA  NA  NA
45        Vermont                     NA NA  NA  NA  NA  NA  NA
46       Virginia              271363.23 NA  NA  NA  NA  NA  NA
47     Washignton              256817.77 NA  NA  NA  NA  NA  NA
48  West Virginia               82052.38 NA  NA  NA  NA  NA  NA
49      Wisconsin              138538.92 NA  NA  NA  NA  NA  NA
50        Wyoming                     NA NA  NA  NA  NA  NA  NA
51                                    NA NA  NA  NA  NA  NA  NA
52                                    NA NA  NA  NA  NA  NA  NA

december <- december[-(51:52), -(3:9)]
       State Mean.of.median.housing
1         Alabama              128604.11
2          Alaska                     NA
3         Arizona              199831.35

# map_id creates the aesthetic mapping to the state name column in your data
p <- ggplot(december, aes(map_id = december$State)) + 
# map points to the fifty_states shape data
geom_map(aes(fill = december$Mean.of.median.housing), map = fifty_states) + 
expand_limits(x = fifty_states$long, y = fifty_states$lat) +
coord_map() +
scale_x_continuous(breaks = NULL) + 
scale_y_continuous(breaks = NULL) +
labs(x = "", y = "") +
theme(legend.position = "bottom", 
panel.background = element_blank())
p

seq_len中的错误(nrow(data) - 1):参数必须可强制转换为非负整数

我该如何解决?我尝试了很多选择,但都失败了。 如果有人分享一个很好的来源,如何按州做美国地图,也要感谢。

此致 奥雷克

1 个答案:

答案 0 :(得分:2)

如果没有您的确切数据,很难说出问题所在。但是,我已设法使用您在评论中提供的数据的自适应摘要复制错误。使用小写版本的州名称时,错误消失。我还使用sapply(december, length)检查了所有变量的长度是否相同。

首先,改编数据:

december <- structure(list(state = structure(1:7, .Label = c("Alabama", "Alaska", "Arizona", "Arkansas", "California", "New Jersey", "Wyoming"), class = "factor"), housing = c(128604.1126, 199831.3511, 107573.9375, 443727.5987, 238422.2379, 286932.2548, NA)), .Names = c("state", "housing"), row.names = c(NA, 7L), class = "data.frame")

此版本的代码提供错误:

p <- ggplot(december, aes(map_id = state)) + 
     geom_map(aes(fill = housing), map = fifty_states) + 
     expand_limits(x = fifty_states$long, y = fifty_states$lat) +
     coord_map() +
     scale_x_continuous(breaks = NULL) + 
     scale_y_continuous(breaks = NULL) +
     labs(x = "", y = "") +
     theme(legend.position = "bottom", 
          panel.background = element_blank())
p
  

seq_len中的错误(nrow(data) - 1):参数必须是可强制的   非负整数

但是使用state变量的小写版本似乎可以解决它:

december$statelower <- tolower(december$state)

p <- ggplot(december, aes(map_id = statelower)) + 
     geom_map(aes(fill = housing), map = fifty_states) + 
     expand_limits(x = fifty_states$long, y = fifty_states$lat) +
     coord_map() +
     scale_x_continuous(breaks = NULL) + 
     scale_y_continuous(breaks = NULL) +
     labs(x = "", y = "") +
     theme(legend.position = "bottom", 
          panel.background = element_blank())
p

下面的地图是根据上面的代码生成的。 housing_fifty_states_map