Tabelle

Funzioni che generano tabelle

Le tabelle vengono generate attraverso funzioni differenti, ciascuna specializzata in un tipo specifico di tabella.

Funzione Tipo di tabella
cat Distribuzione di frequenze variabile categoriale
ord Distribuzione di frequenze + statistiche descrittive (media, deviazione standard, ecc.)
scale Statistiche descrittive di un set di variabili
md Distribuzioni di frequenze di un set di variabili multidicotomy
mc Distribuzioni di frequenze di un set di variabili multicategory
tbox Top-box di un set di variabili
camp Distribuzioni di frequenze a totale delle variabili dei pannelli
camp2 Distribuzioni di frequenze a totale delle variabili dei pannelli con totale per ogni variabie
cbyc Distribuzioni di frequenze variabili dei pannelli incrociate per le stesse variabili
grid Distribuzioni di frequenze a totale di variabili singole a confronto. Una colonnna per variabile
fre Distribuzione di frequenze variabile categoriale con il solo totale
fred Distribuzione di frequenze + statistiche descrittive con il solo totale
desc Statistiche descrittive di un set di variabili con il solo totale
sord Tabella scale di un set di variabili + singole tabelle ord
ords Tabelle ord di un set di variabili + scale

Funzioni di raggruppamento delle tabelle

Le seguenti funzioni consentono di raggruppare insieme più tabelle:

Funzione Operazione
vjoin Unisce verticalmente più tabelle
hjoin Unisce orizzontalmente più tabelle
htjoin Unisce orizzontalmente più tabelle impostando solo il totale e un’etichetta per le colonne
cat2 Unisce due tabelle cat, la seconda con un sottoinsieme dei codici
ord2 Unisce due tabelle ord, la seconda con un sottoinsieme dei codici
cat2ord Unisce una tabella cat e una ord con un sottoinsieme dei codici
ord2scale Unisce una tabella ord e una scale con dei pesi differenti
page Inserisce un titolo e impagina le tabelle che seguono una sotto l’altra
section Inserisce un titolo che suddivide il report

Argomenti comuni:

  • varname|varlist: un nome di variabile o una lista di nomi di variabili
  • title: il titolo della tabella. Se omesso pTabs2 cerca di ricavare il titolo dalle etichette delle variabili
  • options: un Hash con vari parametri
  • &block: è possibile passare ulteriori sottocomandi all’interno del blocco

I nomi delle variabili possono essere passati come stringhe (racchiusi da virgolette singole o doppie) o come simboli [1]. Liste di più variabili devono essere racchiuse tra parentesi quadre o devono comunque essere dei vettori [2]. La funzione s è utile per generare sequenze di variabili anche complesse.

1
2
3
4
5
 cat 'd1'
 ord :d5, "D5. Titolo"
 md [:d7_1, :d7_2, :d7_3, :d7_4, :d7_5, :d7_6, :d7_7, :d7_8, :d7_9, :d7_10]
 md s(:d7_, 10)                    # => equivale all'istruzione della riga precedente
 scale s([:v,'.1'], 101..104,199)  # => scale [v101.1, v102.1, v103.1, v104.1, v199.1]

Ulteriori opzioni possono essere passate alla funzione all’interno di un blocco, secondo la sintassi:

1
2
3
4
 cat ... do
   # istruzioni interne al blocco
   ...
 end

Varie altre personalizzazioni delle tabelle si ottengono modificando i Parametri di configurazione. I parametri di configurazione passati all’interno del blocco di una tabella, hanno effetto solo per quella tabella.

Un underscore (_) davanti al nome dell’istruzione commenta l’istruzione e tutto il blocco corrispondente.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 # questa tabella non viene generata
 _vjoin "D1 + D5" do
   cat :d1 do
     titles "D1"
   end
   ord :d5 do
     w nil, -10, -5, 5, 10
     titles "D5"
   end
 end

Funzioni che generano tabelle

cat

Distribuzione di frequenze per variabili categoriali.

E’ posibile ottere una tabella con le distribuzioni di frequenza di più variabili. In questo caso è utile attivare la stampa delle etichette delle variabili (rowlabel!).

1
2
 rowlabel!
 cat [:d1, :d2, :d3]

tbox

tbox calcola le distribuzioni di frequenza dei valori aggregati (:codes) di un set di variabili.

Le percentuali di colonna possono essere calcolate sul totale dei casi validi di tutte le variabili oppure sulla base di ciascuna variabile. Impostare il calcolo utilizzando il parametro di configurazione base_tbox. Inoltre con il sottocomando :valids è possibile definire quali sono i codici considerati validi per il calcolo della base.

Se presenti, i totali di riga si riferiscono al totale casi validi di tutte le variabili. Può essere opportuno disabilitare i totali di riga con rtotal_.

1
2
3
4
5
6
7
8
tbox s(:x10_,1..10), "TOP BOX", :codes => [8,9,10]

base_tbox :var
tbox s(:x10_,1..10), "TOP BOX" do
  codes [8,9,10]
end

tbox s(:x10_,1..10), "TOP BOX", :codes => [8,9,10], :valids => 1..10

Suggerimento

L’istruzione tbox può anche essere utilizzata per tabulare un set di variabili multiple con la base delle percentuali diversa per ciascun item

ord

Distribuzione di frequenze e statistiche descrittive (media, deviazione standard, ecc.).

Per le tabelle ord è possibile specificare una o due variabili. E’ possibile utilizzare una variabilie differente per il calcolo delle statistiche descrittive con la sintassi: variabile_frequenze => variabile_descrittive. Con tale sintassi il titolo non può essere inserito di seguito separato da virgola, ma deve essere inserito attraverso il parametro :title, o con il sottocomando title. E’ possibile in alternativa utilizzare il sottocomando wght per specificare le variabili da utilizzare per le statistiche descrittive.

E’ possibile specificare i pesi dei valori della variabile con il sottocomando w.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 ord :d5

 ord :d5 do
   w 7, 2.5, 1, 0.5, 0.25
 end

 ord :d5 => :r5

 ord :d5 => :r5, title => "Title"

 ord :d5 => :r5 do
   title "Title"
 end

 ord :d5, "Title"
   wght :r5
 end

 ord [:v1, :v2, :v3], "Title"
   wght :x1, :x2, :x3
 end

scale

scale produce le statistiche descrittive di un set di variabili. E’ possibile specificare i pesi dei valori della variabile con il sottocomando w.

sord e ords

sord e ords producono la tabella delle statistiche riassuntive (scale) più le singole tabelle con le distribuzioni di frequenza e le statistiche riassuntive (ord). sord mette la tabella scale prima, mentre ords la mette dopo le ord. Nel parametro options è possibile specificare:

  • :w: i pesi da applicare alle variabili (array)
  • :sort: il metodo di ordinamento da applicare alla tabella scale (array)
  • :net: i net per le tabelle ord (hash)
  • :sep: i separatore del progressivo delle tavole nel titolo; if default è .

Utilizzare nel titolo i caratteri ## che verranno sostituito con il separatore e il numero dell’item. Al titolo verrà aggiunta una riga ulteriore con l’etichetta della variabile.

sord non accetta blocchi e sottocomandi.

1
2
3
4
5
 sord s(:d6_,10), "Tabella 6## - Quanto sono importanti per Lei questi aspetti?"

 ords s(:d6_,10), "Tabella 6## - Quanto sono importanti per Lei questi aspetti?",
   :w => [4, 3, 2, 1], :sort => [:d, :mean]
   :net => {"POSITIVO" => 1..2, "NEGATIVO" => 3..4}

md

Distribuzioni di frequenze di un set di variabili multidicotomy.

Nelle tabelle md (multidicotomy) viene conteggiato il valore indicato nel parametro di configurazione md_true_value (il valore predefinito è 1).

La base dei casi validi è data dai valori validi del set di variabili: tipicamente i casi con valori 0 e 1.

Se i parametri nresp e/o mresp sono attivi, in fondo alla tavola viene calcolato anche il numero delle risposte e/o il numero medio delle risposte.

Avvertimento

Se le variabili non sono codificate con 0 e 1, utilizzare le istruzioni md_tf o md_ft per modificare i parametri md_true_value e md_false_value.

1
2
3
4
5
6
 md s(:d7_, 10), "md"

 # entrambe le istruzioni:
 md_ft 1, 2
 md_tf 2, 1
 # impostano i valori md_false_value a 1 e md_true_value a 2

mc

Distribuzioni di frequenze di un set di variabili multicategory.

Nelle tabelle mc (multicategory) la base dei casi validi è data dai valori validi della prima variabile. Pertanto è necessario assicurarsi che tutte le osservazioni che costituiscono la base della tabella, abbiano un valore valido sulla prima variabile.

x...

Per le tabelle fre, fred, desc, cat, ord e scale esistono anche le varianti xfre, xfred, xdesc, xcat, xord e xscale che replicano quel tipo di tabella per ogni variabile dell’elenco. In queste tabelle nel titolo è possibili utilizzare i caratteri ## per generare una numerazione progressiva e $$ per inserire l’etichetta della variabile.

1
2
3
4
 xord s(:d6_,10), "Tabella 6.##. - Quanto sono importanti per Lei questi aspetti?\n$$" do
   w 4, 3, 2, 1
   net "POSITIVO" => 1..2, "NEGATIVO" => 3..4
 end

Avvertimento

Passando un elenco di variabili alle normali istruzioni (cat, ord, ecc.) si ottiene invece un’unica tabella con una sezione per ciascuna variabile.

xt...

xtcat e xtord oltre alla serie di tabelle xcat e xord producono una tabella riassuntiva iniziale (htjoin). Le varianti xcatt e xordt mettono la tabella riassuntiva alla fine.

1
2
3
4
 xtord s(:d6_,10), "Tabella 6.##. - Quanto sono importanti per Lei questi aspetti?" do
   w 4, 3, 2, 1
   net "POSITIVO" => 1..2, "NEGATIVO" => 3..4
 end

grid

(Vedi anche il paragrafo successivo by_value )

Le tabelle grid sono di due tipi: singole e multiple. Il risultato è l’affiancamento delle distribuzioni di frequenza a totale delle varie variabili singole o dei set di variabili multiple.

Nelle grid singole ogni colonna corrisponde a una variabile e ogni riga a uno dei livelli delle variabili. Le variabili devono avere gli stessi livelli.

Nelle grid multiple ogni colonna corrisponde a un set di variabili multidicotomy e ogni riga ai diversi item. I set di variabili multiple devono avere la stessa numerosità e avere item corrispondenti.

Le tabelle grid hanno bisogno di ulteriori etichette. Con label si specifica l’etichetta del gruppo di colonne e con labels le etichette delle singole colonne. Nelle grid singole, se labels non è specificato vengono usate le etichette delle variabili. Nelle grid multiple, le variabili vanno specificate in più gruppi (un vettore di vettori).

Se necessario, impostare nel modo opportuno le percentuali della riga del totale con trowpct e tcolpct.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 trowpct_
 tcolpct!

 grid "Test GRID\n(Variabili singole)" do
   vars  s(:d6_,10)
   label "Domanda 6"
 end

 grid "Test GRID\n(Variabili multiple)" do
   vars   ss("d9_#1_#2",4,8)
   label  "MARCHE"
   labels "Marca 1", "Marca 2", "Marca 3", "Marca 4"
 end

E’ possibile inserire esplicitamente la matrice di variabili, oppure combinare più funzioni s, oppure utilizzare la funzione ss, oppure utilizzare in_groups_of per sudividere un unico elenco:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
   varlist = ['d9_1_1', 'd9_1_2', 'd9_1_3', 'd9_2_1', 'd9_2_2', 'd9_2_3', 'd9_3_1', 'd9_3_2', 'd9_3_3', 'd9_4_1', 'd9_4_2', 'd9_4_3']

   vars ss("d9_#1_#2",4,3)
   # ...equivale a:
   vars s(:d9_1_,1..3), s(:d9_2_,1..3), s(:d9_3_,1..3), s(:d9_4_,1..3)
   # ...equivale a:
   vars varlist.in_groups_of(3)
   # ...equivale a:
   vars [['d9_1_1', 'd9_1_2', 'd9_1_3'], ['d9_2_1', 'd9_2_2', 'd9_2_3'],
         ['d9_3_1', 'd9_3_2', 'd9_3_3'], ['d9_4_1', 'd9_4_2', 'd9_4_3']]

Schema dell’impiego dei sottocomanti di una grid con variabili multiple:

_images/grid_m.png

by_value

(Vedi anche il paragrafo precedente grid )

E’ possibile tabulare batterie di variabili singole (di tipo cat o ord), disponendo i valori in orizzontale su colonne differenti (in pannello), attivando il parametro di configurazione value_by_side_freq o utilzzando più brevemente by_value. Tale tipologia di tabella è ottenibile solo a totale e quindi solo se non è attivo un pannello. Inoltre la batteria di variabili deve avere gli stessi valori o le stesse etichette dei valori.

1
2
3
4
5
6
7
8
9
by_value!

cat s(:d5_,1..10), "Tabella D5"

cat s(:d6_,1..10), "Tabella D6" do
  w 0=>:na, 1=>1, 2=>2, 3=>3, 4=>4
end

by_value_

Nel caso sia attivo un pannello, è possibile disabilitarlo temporaneamente. E’ inoltre possibile utilizzare il parametro by_value localmente, all’interno del blocco della tabella, senza bisogno poi di disattivarlo.

1
2
3
4
5
6
panels_
cat s(:d6_,1..10), "Tabella D6" do
  w 0=>:na, 1=>1, 2=>2, 3=>3, 4=>4
  by_value!
end
panels!

by_stat

Quando le tavole sono a totale (senza variabili di pannello) il parametro stat_by_side_freq o più brevemente by_stat, dispone le statistiche in orizzontale su colonne differenti (in pannello). Tale comportamento è quello predefinito. Per disattivarlo utilizzare by_stat_ e per riattivarlo by_stat!.

Funzioni di raggruppamento delle tabelle

vjoin

Genera un’unica tabella unendo verticalmente (accoda ) più tabelle che presentano lo stesso pannello. Eventuali parametri modificati all’interno del corpo di vjoin hanno validità locale.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 vjoin "D5.2. Domanda 5 con medie più aggregazione" do
   total_after!
   ord :d5 do
     w nil, -10, -5, 5, 10
   end
   cat :r5 do
     titles "D5.2 aggregata"
   end
 end

 panels.add! :month
 vjoin "INVESTMENTS BY YEAR" do
   years.each do |year|
     filter :year => year
     scale :invest, "YEAR: #{year}"
   end
 end

hjoin

Genera un’unica tabella unendo orizzontalmente (affianca) più tabelle che presentano la stessa fiancata. Eventuali parametri modificati all’interno del corpo di hjoin hanno validità locale.

1
2
3
4
5
 hjoin "D6_1 vs D6_2 vs D6_3" do
   ord :d6_1
   ord :d6_2
   ord :d6_3
 end

E’ possibile cambiare pannello all’interno di una hjoin:

1
2
3
4
5
6
 hjoin "Confronto valutazioni" do
   panels.add! :v51_2
   ord :v51_1
   panels.add! :v52_2
   ord :v52_1
 end

Se i pannelli hanno un numero di colonne differenti, si consiglia di disattivare l’intestazione del pannello con l’istruzione vjoin_header_.

htjoin

Genera un’unica tabella unendo orizzontalmente (affianca) più tabelle che presentano la stessa fiancata, imposta il pannello al solo totale e aggiunge un’etichetta alle colonne. Permette di generare tabelle grid per atri tipi di variabili non previste dalla funzione grid.

Parametri aggiuntivi:

  • header: l’intestazione delle colonne. Deve essere passato come argomento dopo il titolo
1
2
3
4
5
 htjoin "D6. Domanda 6 con item affiancati in colonna", "AFFERMAZIONI" do
   s(:d6_,10).rep do |v|
     ord v
   end
 end

Attenzione

Non è possibile innestare un’istruzione *join all’interno di un’altra.

cat2

Genere una tabella vjoin con due tabelle cat, una con tutti i codici e una senza i codici indicati.

Parametri aggiuntivi:

  • :label => string: l’etichetta della seconda tabella
  • :labels => [string, string]: le etichette delle due tabelle
  • :nr => code|[codes]: il codice o i codici da escludere nella seconda tabella
1
2
cat2 :d32, "Tab. D32", :label => "Al netto del \"Non indica\"", :nr => 6
cat2 :d32, "Tab. D32", :labels => ["Con \"Non indica\"", "Al netto del \"Non indica\""], :nr => 6

ord2

Genere una tabella vjoin con due tabelle ord, una con tutti i codici e una senza i codici indicati.

Parametri aggiuntivi:

  • :label => string: l’etichetta della seconda tabella
  • :labels => [string, string]: le etichette delle due tabelle
  • :nr => code|[codes]: il codice o i codici da escludere nella seconda tabella
1
2
3
ord2 :d5, "Tab. D5", :label => "Al netto del \"Non indica\"", :nr => 0 do
  w 0=>:na, 1=>4, 2=>3, 3=>2, 4=>1
end

cat2ord

Genere una tabella vjoin con una tabella cat e una tabella ord senza i codici indicati.

Parametri aggiuntivi:

  • :label => string: l’etichetta della seconda tabella
  • :labels => [string, string]: le etichette delle due tabelle
  • :nr => code|[codes]: il codice o i codici da escludere nella seconda tabella
1
2
3
cat2ord :d5, "Tab. D5", :label => "Al netto del \"Non indica\"", :nr => 0 do
  w 1=>4, 2=>3, 3=>2, 4=>1
end

ord2scale

Genere una tabella vjoin con una tabella ord e una tabella scale con dei pesi differenti.

Parametri aggiuntivi:

  • :label => string: l’etichetta della seconda tabella
  • :labels => [string, string]: le etichette delle due tabelle
  • :pref => string: un prefisso da aggiungere alle statistiche descrittive
  • :suff => string: un suffisso da aggiungere alle statistiche descrittive
1
2
3
4
ord2scale :v10, "Tab. D5", :suff => " (1-100)" do
  w1 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10
  w2 1=>10, 2=>20, 3=>30, 4=>40, 5=>50, 6=>60, 7=>70, 8=>80, 9=>90, 10=>100
end

page

L’istruzione page inserisce un titolo e impagina le tabelle che seguono unendole una sotto l’altra.

Argomenti:

  • "titolo": il titolo
  • :title => :header|:banner|:none: lo stile del titolo (default :header)
  • :panel => :first|:all: stampa il pannello solo per la prima tavola (:first il default) o per tutte le tavole (:all)
  • :total => :first|:all: stampa la riga del totale solo per la prima tavola (:first) o per tutte le tavole (:all il default)
  • :index => :page|:all: inserisce una voce nell’indice per ciascuna tavola (:all default) o una voce unica per tutte le tavole (:pagel)
  • :stop: termina la pagina. Una nuova dichiarazione di pagina interrompe comuque quella precedente senza bisogno di indicare esplicitamente page :stop
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 page "SCREENING", :total => :first
 cat :s1
 cat :s2
 cat :s3

 page "L'ACQUISTO"
 ord q1
 cat q2
 cat q3
 md s(:q4,10)

 page :stop

Suggerimento

page permette anche di raggrupare in un’unica tabella più istruzioni *join.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 page "PAGE + HTJOIN", :title => :none, :total => :first, :index => :page

 htjoin "Tabella D1.1", "ITEMS" do
   xcat s(:d1_1_,1..10)
 end
 htjoin "Tabella D1.2", "ITEMS" do
   xcat s(:d1_2_,1..10)
 end

 page :stop

Attenzione

page non controlla la coerenza degli elementi che si uniscono pertanto combina anche tabelle che hanno pannelli differenti. E’ compito dell’utente verificare la coerenza della tabella generata.

section

L’istruzione section "title" permette di inserire nel report dei titoli che suddividono il report in varie sezioni.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
   section "PACK TEST"
   cat x1
   ord x2
   ...

   section "PRODUCT TEST"
   cat x101
   cat x102
   ...

   section "SOCIO-DEMO"
   ...

Utilizzando la sintassi section "tag" => "title", tag verrà usato per la generazione del nome del foglio/file nel render in formato xlsx quando si utilizza il parametro sections => :sheet|:file. Altrimenti viene utilizzato direttamente l’etichetta della sezione.

Utilizzando la sintassi section "tag" => "title" verrà inoltre definita la classe di appartenenza delle tabelle seguenti utile per la definizione dei dati in formato pulsar. E’ possibile definire sottoclassi indicando le classi genitori separate dal carattere >.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 section "CONS" => "ABITUDINI DI CONSUMO"
 ...

 section "CONS>CASA" => "CONSUMO IN CASA"
 ...

 section "CONS>FUORI" => "CONSUMO FUORI CASA"
 ...

 section "CONS>FUORI>VAC" => "CONSUMO IN VACANZA"
 ...

section! esegue anche all all’inizio della sezione.

sections

sections permette di generare solo le tavole delle sezioni indicate.
E’ possibile usare stringhe/simboli o espressioni regolari.
Se è stato definito un tag, la stringa deve essere uguale al tag, altrimenti deve essere contenuta nella label. I confronti sono case-insensitive.
Il comando sections deve essere posto prima delle istruzioni delle tabelle.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sections :s2, :s4

section "s1" => "SEZIONE A"
...

section "s12" => "SEZIONE B"
...

section :s3 => "SEZIONE C"
...

section :s4 => "SEZIONE D"
...

autosection

L’istruzione autosection permette di riconoscere automaticamente le sezioni durante l’esecuzione delle tavole in base ai nomi delle variabili.

E’ possibile utilizzare un array con l’elenco di testi da cercare nel nome della variabile, oppure un hash con come chiave il testo e come valore il tag e il titolo della sezione.

Il testo verrà cercato all’inizio del nome della variabile. Alternativamente è possibile utilizzare un’espressione regolare.

Se la tabella è composta da più variabili, verrà considerata soltanto la prima.

Ciascuna sezione viene impostata una sola volta, alla prima ricerca con esito positivo del prefisso.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
autosection [:screen, :b, :c, :d, :gen]

autosection ["screen", "b", "c", "d", "gen"]

autosection %w(screen b c d gen)

autosection ["screen", /_sez1$/, /_sez_fin$/)

autosection "screen" => "SCREEN", "b" => "SEZ B", "c" => "SEZ C",
            "d" => "SEZ D", "e" => "SEZ E", "gen" => "ANAG"

autosection :screen => ["SCREEN", "SEZIONE A"],
            :b => ["SEZ B", "SEZIONE B"],
            :c => ["SEZ C", "SEZIONE C"],
            :d => ["SEZ D", "SEZIONE D"],
            :e => ["SEZ E", "SEZIONE E"],
            /_anag$/ => ["ANAG", "SEZIONE ANAGRAFICHE"]

Suggerimento

Può essere utilizzato per dividere in sezioni le tabelle dell’ autotab.

txt1, txt2, txt3

txt1, txt2 e txt3 permettono di inserire del testo per suddifidere ulteriormente il report oltre alle sezioni. Le tre funzioni inseriscono un titolo con livelli di formattazione differenti e opzionalmente è possibile un corpo di testo.

1
2
3
4
5
6
7
8
section "Sezione 1"

txt1 "Sottosezione 1.1"

txt3 "Titolo" do
  row "Riga 1"
  row "Seconda riga"
end

image

image inserisce un’immagine nel report.

Argomenti:

  • filename: il nome del file
  • :title => String: il testo del titolo
  • :link => String: un link da associare all’immagine
  • :w => Number: l’ampiezza in pixel dell’immagine
  • :n => Number: l’altezza in pixel dell’immagine
1
 image "filename.png", :title => "Titolo", :link => "https://google.com"

Note

[1]Un simbolo rappresenta semplicemente una stringa ed è costituito dalla stringa di caratteri (il primo non numerico) preceduto dai due punti: :area. Il punto ”.” non può essere utilizzato all’interno di un simbolo.
[2]Le parentesi quadre sono la sintassi base per definire un Array (vettore), ovvero: [elemento1, elemento2, ...]. In generale può essere usata qualsiasi funzione che restituisce un array. La funzione s o seq di pTabs restituisce un array.