2012-03-04 20 views

Odpowiedz

5

Szybka odpowiedź:

nams <- map("world", namesonly=TRUE, plot=FALSE) 

map("world", region=nams[-grep("Antarctica", nams)]) 

Dłuższa odpowiedź:

Dane map w „świecie” odwołuje się do nazw regionów i są to na ogół dane znakowe w „kontynent: kraj” lub „kontynent: podregion "format. Aby uzyskać nazwy znajdujące się w zewnętrznej bazie danych, należy najpierw użyć map ("świat", ...) z parametrami, które zwracają tylko nazwy, a nie wszystkie inne współrzędne. Jeśli chcesz znaleźć wszystkie wpisy zawierające słowo "Antarctica", musisz użyć polecenia grep() w celu zidentyfikowania ich pozycji w zwróconym wektorze nazw.

+0

to działało, dziękuję. Szkoda, że ​​nie było dobrej książki dla początkujących R. Oprogramowanie jest genialne, ale składnia nie jest przyjazna :( –

+0

Nie mogę twierdzić, że wiedziałem o tym wszystkim z wyprzedzeniem, ponieważ wiele korzyści można uzyskać, uruchamiając przykłady na stronach pomocy. w pliku pomocy i zrobić trochę eksperymentów, aby się tam dostać.W szczególności wydawało się, że potrzeba włączenia wykresu = FALSE była konieczna, aby uzyskać wyjście jako wektor znaków, ale okazało się, że wartości te były zwracane, ale tylko niewidoczne, więc wpisanie 'map (" world ", namesonly = TRUE)' nie zwróciło nic na konsoli, ale zakończyłoby się powodzeniem z 'nams2 <- map (" world ", namesonly = TRUE)'. –

+0

Powoduje to błąd: "wyrażenie regularne to zbyt duży " –

4

Jeśli patrząc tylko na tych obszarach, brutalne rozwiązanie byłoby użyć mapy świata, określ USA jako region i określić szerokość/długość geograficzna, aby tworzyć granice, więc mapa będzie wyświetlać tylko określony obszar:

library(maps) 
long <- c(-180,-50) 
lat <- c(10,80) 
map("world",regions=".*usa",xlim=long,ylim=lat) 

enter image description here

Powiązane problemy