SORU
22 Ocak 2013, Salı


Harf "y" sonra "gelir&sıralarken " alfabetik olarak

Fonksiyonu x bir karakteri olduğu sort(x), kullanırken, "a" harfinin ortasına atlar, sonra sağ harfi "i": . y

> letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
[21] "u" "v" "w" "x" "y" "z"

> sort(letters)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[21] "t" "u" "v" "w" "x" "z"

Nedeni Litvanya ' da bulunan biriyim, ve bu "-Litvanya" harf sıralama, ama ben normal sıralama lazım. olabilir Nasıl sıralama yöntemi normal içinde R kodu geri değiştirebilirim?

Windows 7 R 2.15.2 kullanıyorum.

CEVAP
22 Ocak 2013, Salı


R çalışan yerel ayarları değiştirmeniz gerekir. Ya bütün Windows altında görünüyor ()) R seans içinde yüklemek için:

Sys.setlocale("LC_COLLATE", "C")

"C" * * * * yerine herhangi bir geçerli yerel ayar dizesi kullanabilirsiniz, ama sizin istediğiniz dönmem gerekiyor.

Daha fazlası için ?locales okuyun.

Kardeş işlevi fazlalaştı sanırım yerel bir parametre geçerli ayarı sorgular Sys.getlocale(),. Dolayısıyla yapabilirsin

(locCol <- Sys.getlocale("LC_COLLATE"))
Sys.setlocale("LC_COLLATE", "lt_LT")
sort(letters)
Sys.setlocale("LC_COLLATE", locCol)
sort(letters)
Sys.getlocale("LC_COLLATE")

## giving:
> (locCol <- Sys.getlocale("LC_COLLATE"))
[1] "en_GB.UTF-8"
> Sys.setlocale("LC_COLLATE", "lt_LT")
[1] "lt_LT"
> sort(letters)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n"
[16] "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "z"
> Sys.setlocale("LC_COLLATE", locCol)
[1] "en_GB.UTF-8"
> sort(letters)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o"
[16] "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
> Sys.getlocale("LC_COLLATE")
[1] "en_GB.UTF-8"

bu tabii ki @Hadley Cevabı gösterir with_collate() sonra biraz daha özlü bir şekilde yapıyordevtoolsyüklü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS

    ASUS

    22 EKİM 2005
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010