![](/img/trans.png)
[英]Error in xy.coords(x, y) : 'x' and 'y' lengths differ charts.PerformanceSummary R XTS
[英]R language Error in xy.coords(x, y)
我正在關注有關如何Vizualise連接R的教程(這是我第一次使用R) http://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/
我做了一些小的更改以顯示特定的數據,但是在執行最后的lines()函數繪制步驟時遇到了一些問題。
執行以下c時出現以下錯誤
Error in xy.coords(x, y) :
'x' is a list, but does not have components 'x' and 'y'
我傳遞給情節的信息如下
> 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
我正在嘗試執行的代碼如下
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)的輸出如下:
> 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
不知道哪里有錯誤。 如果有人能夠給我幫助,我將不勝感激。
謝謝雨果
#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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.