R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

R Inferno – dropping dimensions

Patrick Burnsin kirja R Inferno esittelee erittäin suuren määrän mahdollisia sudenkuoppia, jotka liittyvät R-kielen käyttöön. Kirja on monellakin tapaa hyvin laadittu, mutta omien taitojen etenemistä voi hyvin mitata sen avulla, mihin kirjan lukuun useimmat kohdatut ongelmat sijoittuvat, sillä kirja noudattelee kevyesti Danten Inferno-runoa.

”If you are using R and you think you’re in hell, this is a map for you.”

Taulukkomuotoisten aineistojen, esimerkiksi datakehikoiden käsittelyyn liittyvä kohtuullisen usein vastaantuleva knoppi (R Inferno, 8.1.44) on, että kun datakehikosta poimitaan yksi rivi tai sarake, ei tuloksena saatava objekti enää olekaan datakehikko, vaan vektori. Esimerkiksi:

xdf2 <- data.frame(a=1:4, b=42:45, row.names=LETTERS[1:4])
xdf2[,1]
[1] 1 2 3 4
class(xdf2[,1])
[1] "integer"

Ongelma voidaan korjata lisäämällä poiminnan hoitavan alaindeksin sisään argumentti drop=FALSE:

xdf2 <- data.frame(a=1:4, b=42:45, row.names=LETTERS[1:4])
xdf2[,1, drop=FALSE]
  a
A 1
B 2
C 3
D 4
class(xdf2[,1, drop=FALSE])
[1] "data.frame"

Lisähyötynä argumentin drop=FALSE käytöstä on, että sarakkeiden ja rivien nimet saadaan mukaan muodostuvaan objektiin, sillä ne katoavat, jos tuloksena on vektori (vrt. yllä), ja ne pitää mahdollisesti lisätä jälkikäteen erikseen.


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *