Domanda

Sto leggendo, da solo (non per HW) sulla programmazione, e un esercizio ha comportato la programmazione del triangolo di Pascal in R. La mia prima idea è stata quella di fare un elenco e poi aggiungere cose, ma non ha funzionato troppo bene. Poi ho pensato di iniziare con un vettore e di fare un elenco da quello, alla fine. Poi ho pensato di fare una matrice e di farne un elenco alla fine.

Non sono sicuro di quale modo persino avvicinarsi a questo.

Qualche suggerimento?

Grazie

È stato utile?

Soluzione

C'è una soluzione su Codice Rosetta:

pascalTriangle <- function(h) {
  for(i in 0:(h-1)) {
    s <- ""
    for(k in 0:(h-i)) s <- paste(s, "  ", sep="")
    for(j in 0:i) {
      s <- paste(s, sprintf("%3d ", choose(i, j)), sep="")
    }
    print(s)
  }
}

Lo memorizzerei in un elenco se lo stavo sviluppando da solo, poiché questa è la struttura dei dati più naturali per gestire le righe di lunghezza variabile. Ma dovresti davvero chiarire un caso d'uso prima di prendere quella decisione. Hai intenzione di fare analisi sui dati dopo che sono stati generati?

Modificare:

Ecco la soluzione Rosetta riscritta con meno loop e memorizza i risultati come elenco:

pascalTriangle <- function(h) {
  lapply(0:h, function(i) choose(i, 0:i))
}

Altri suggerimenti

Usando una proprietà del triangolo Pascal:

x <- 1
print(x)
for (i in 1:10) { x <- c(0, x) + c(x, 0); print(x) }

Suppongo che questo codice sia molto veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top