首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xy.coords(x,y)中的%r语言错误

xy.coords(x,y)中的%r语言错误
EN

Stack Overflow用户
提问于 2014-12-17 18:35:26
回答 1查看 1.5K关注 0票数 0

我正在学习教程(这是我第一次使用R),了解如何可视化连接R http://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/

我做了一些小的更改来显示特定的数据,但是在执行绘制line()函数的最后一步时遇到了一些问题。

在执行下面的c#代码时,我得到以下错误

代码语言:javascript
复制
Error in xy.coords(x, y) : 
  'x' is a list, but does not have components 'x' and 'y'

我传递给plot的信息如下

代码语言:javascript
复制
> airports
    iata                                      country        lat        long
1     AD                                      Andorra  42.546245    1.601554
2     AE                         United Arab Emirates  23.424076   53.847818

>flights
  AIRLINE AIRLINE1 AIRPORT CNT
1    AK02       NZ      AR 130
2    AS01       GB      AE 257

我尝试执行的代码如下所示

代码语言:javascript
复制
library(maps)
library(geosphere)
library(XLConnect)               # load XLConnect package 

wk1 = loadWorkbook("C:/Users/cacoteh/AppData/Local/NoBackup/flights.xlsx") 
wk2 = loadWorkbook("C:/Users/cacoteh/AppData/Local/NoBackup/airports.xlsx") 

flights = readWorksheet(wk1, sheet="flights")
airports = readWorksheet(wk2, sheet="airports")

# Unique carriers
carriers <- unique(flights[1])

# Color
pal <- colorRampPalette(c("#333333", "white", "#1292db"))
colors <- pal(100)

pdf(paste("carrier.pdf", sep=""), width=11, height=7)
map("world", col="#f2f2f2", fill=TRUE, bg="#f5f5dc", lwd=0.05)
maxcnt <- max(flights["CNT"])
for (j in 1:nrow(flights) ) {
  air1 <- flights[j,"AIRLINE1"]
  for (k in 1: nrow(airports) ) { 
    if ( airports[k,1] == air1 ) {
      lat1 <- airports[k,3]
      lon1 <- airports[k,4]
    }
  }
  air2 <- flights[j,"AIRPORT"]
  for (k in 1: nrow(airports) ) { 
    if ( airports[k,1] == air2 ) {
      lat2 <- airports[k,3]
      lon2 <- airports[k,4]
    }
  }

  inter <- gcIntermediate(c(lon1, lat1), c(lon2, lat2), n=100, addStartEnd=TRUE, breakAtDateLine=TRUE)
  colindex <- round( ( flights[j,4] / maxcnt )* length(colors) )
  lines(inter, col="black", lwd=0.8)
    }

dev.off()

gcIntermediate (inter)的输出如下:

代码语言:javascript
复制
> inter
[[1]]
          lon       lat
[1,] 174.8860 -40.90056
[2,] 175.6352 -41.51760
[3,] 176.3988 -42.12968
[4,] 177.1773 -42.73661
[5,] 177.9710 -43.33816
[6,] 178.7806 -43.93411
[7,] 180.0000 -44.52423

[[2]]
             lon       lat
 [1,] -180.00000 -45.10827
 [2,] -178.69075 -45.68599
 [3,] -177.81287 -46.25713
 [4,] -176.91662 -46.82140

不确定错误到底出在哪里。如果有人能给我帮助,我将不胜感激。

谢谢你,雨果

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 03:11:30

代码语言:javascript
复制
#lines(inter,col="#bb4cd4",lwd=1) only for the result is matrix but not list
#so you can do it like this:
if(is.matrix(inter))
lines(inter,col="#bb4cd4",lwd=1)
else {
lines(inter[[1]],col="#bb4cd4",lwd=1);
lines(inter[[2]],col="#bb4cd4",lwd=1)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27523564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档