Remix.run Logo
_Wintermute 6 days ago

In my opinion R should thought of as an unbeatable graphical calculator, but an awful programming language.

williamcotton 5 days ago | parent | next [-]

The tinyverse collection of packages makes things a lot more sane, IMO:

  penguins <- read_csv("penguins.csv") |>
    na.omit() |>
    select(species, island, bill_length_mm, body_mass_g) |>
    group_by(species, island) |>
    summarize(
      mean_bill_length = mean(bill_length_mm),
      mean_mass = mean(body_mass_g),
      n = n()
    ) |>
    arrange(species, desc(mean_bill_length))
  
  penguins |>
    ggplot(aes(x = species, y = mean_bill_length, fill = island)) +
    geom_col(position = "dodge") +
    labs(
      title = "Mean Bill Length by Species and Island",
      y = "Mean Bill Length (mm)"
    ) +
    theme_minimal()
_Wintermute 5 days ago | parent [-]

True, but trying to wrap any of that into a function rather than simple scripts makes you delve into the ever-deprecated API for non-standard evaluation.

wdkrnls a day ago | parent | prev | next [-]

You must hate lisp/scheme then too, which has similar semantics as R. In that case books such as SICP would be lost on you.

currymj 5 days ago | parent | prev | next [-]

i would compare base R to basically a shell. meant to be used interactively. okay for small scripts. you can write big programs but it will get weird.

perrygeo 5 days ago | parent | prev [-]

That's how I view it. I still use R for plotting and quick stats analyses but it is painful to do any real work.

I recommend the article "Evaluating the Design of the R Language" [1] - it reads like a horror story. The memory usage and performance is abysmal, the OO features are a mess, and the semantics are very weird ("best effort semantics" is about as predictable as it sounds!). The lexical scoping is based on Scheme but has so many weird edge cases. It's a dumpster fire of a language, but it somehow works for its intended purpose.

[1] http://janvitek.org/pubs/ecoop12.pdf