Ho tabelle di contingenza di varie dimensioni. Mi piacerebbe indicizzarli utilizzando un set di valori da un set di dati. Tuttavia, myTable[c(5,5,5,5)]
chiaramente non fa quello che voglio. Come posso ottenere c(5,5,5,5)
come myTable[5,5,5,5]
?Tabella multidimensionale di indicizzazione mediante il vettore di colonna
6
A
risposta
3
In seguito su @ ttmaccer's answer: funziona a causa del paragrafo (leggermente) oscuro in ?"["
che legge:
When indexing arrays by ‘[’ a single argument ‘i’ can be a
matrix with as many columns as there are dimensions of ‘x’;
the result is then a vector with elements corresponding to
the sets of indices in each row of ‘i’.
L'effetto di utilizzare t(ii)
in
ii <- c(5,5,5,5)
a[t(ii)]
è quello di convertire ii
ad una matrice 1x4 che [
interpreta come matrice come sopra descritto; a[matrix(ii,nrow=1)]
sarebbe più esplicito ma meno compatto.
La cosa bella di questo approccio (oltre ad evitare gli aspetti magico-apparente di do.call
) è che funziona in parallelo per più di una serie di indici, come in
jj <- matrix(c(5,5,5,5,
6,6,6,6),byrow=TRUE,nrow=2)
a[jj]
## [1] 4445 5556
2
Se ho capito bene la tua domanda, questo costrutto, utilizzando do.call()
, dovrebbe fare quello che vuoi:
## Create an example array and a variable containing the desired index
a <- array(1:1e4, dim = c(10, 10, 10, 10))
ii <- c(5, 5, 5, 5)
## Use do.call to extract the desired element.
do.call("[", c(list(a), ii))
# [1] 4445
La chiamata sopra funziona perché i seguenti sono tutti equivalenti:
a[5, 5, 5, 5]
`[`(a, 5, 5, 5, 5)
do.call("[", list(a, 5, 5, 5, 5))
do.call("[", c(list(a), ii))
Problemi correlati
- 1. C++ Indicizzazione array multidimensionale
- 2. vettore vettoriale multidimensionale di ints?
- 3. inserire elementi nel vettore multidimensionale
- 4. MATLAB espressione colonna indicizzazione
- 5. Indicizzazione di una colonna MySql TEXT?
- 6. Oracle: indicizzazione di un sottoinsieme di righe di una tabella
- 7. Elegante indicizzazione fino alla fine del vettore/matrice
- 8. Indicizzazione dell'array del tipo di colonna di stringhe in PostgreSql
- 9. Copia array multidimensionale per il vettore e viceversa
- 10. Convertire vettore riga di vettore colonna in NumPy
- 11. Libpuzzle Indicizzazione milioni di immagini?
- 12. Indicizzazione Postgres?
- 13. Cambia vettore riga per vettore colonna
- 14. colonna di indicizzazione per ricerca a testo integrale
- 15. mysql indicizzazione parziale, indicizzazione inversa
- 16. Ordinamento multidimensionale di array PHP
- 17. Ordinamento della tabella di dati per più colonne mediante C#
- 18. conversione di una ctab multidimensionale() - tabella in formato LaTeX
- 19. Riga di tabella Contentedable, modificatore di colonna
- 20. impedire la conversione automatica di singola colonna di vettore
- 21. Riparazione/indicizzazione di grandi tabelle e myisam_sort_buffer_size
- 22. vettori di indicizzazione e array con +:
- 23. Delphi SetLength personalizzata indicizzazione
- 24. Il connettore di indicizzazione BCS personalizzato con indicizzazione incrementale di changelog non funziona correttamente
- 25. Conversione del risultato della tabella dati nell'albero mediante C#
- 26. R - come ottenere un valore di un array multidimensionale da un vettore di indici
- 27. Trovare un vettore all'interno di un vettore
- 28. Come si modifica il tipo di dati Colonna tabella su più di una colonna?
- 29. Trova una tabella quando conosci il nome di una colonna?
- 30. Come si ottiene il tipo di colonna dalla tabella?
Grazie per l'espansione su @ risposta di ttmacer . Molto bella. –