Tengo tablas de contingencia de diferentes tamaños. Me gustaría indexarlos usando un conjunto de valores de un conjunto de datos. Sin embargo, myTable[c(5,5,5,5)]
claramente no hace lo que quiero. ¿Cómo consigo c(5,5,5,5)
para leer como myTable[5,5,5,5]
?Tabla multidimensional de indexación utilizando el vector de columna
6
A
Respuesta
3
Siguiendo en la respuesta de @ttmaccer: esto funciona debido al párrafo (ligeramente) oscuro en ?"["
que dice:
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’.
El efecto de usar t(ii)
en
ii <- c(5,5,5,5)
a[t(ii)]
es convertir ii
a una matriz de 1x4 que [
interpreta como una matriz como se describió anteriormente; a[matrix(ii,nrow=1)]
sería más explícito pero menos compacto.
Lo bueno de este enfoque (además de evitar los aspectos mágicos de apariencia de do.call
) es que funciona en paralelo durante más de un conjunto de índices, como en
jj <- matrix(c(5,5,5,5,
6,6,6,6),byrow=TRUE,nrow=2)
a[jj]
## [1] 4445 5556
2
Si he entendido bien su pregunta, esta construcción, el uso de do.call()
, debe hacer lo que quiera:
## 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 llamada anterior funciona, porque los siguientes son todas equivalentes:
a[5, 5, 5, 5]
`[`(a, 5, 5, 5, 5)
do.call("[", list(a, 5, 5, 5, 5))
do.call("[", c(list(a), ii))
Cuestiones relacionadas
- 1. Minimizar vector indexación overhead
- 2. cambiar el tamaño de vector multidimensional
- 3. Elegante indexación hasta el final del vector/matriz
- 4. reserva() de memoria multidimensional std :: vector (C++)
- 5. Indexación de Postgres?
- 6. Tabla de datos a matriz multidimensional
- 7. Formato de columna de tabla
- 8. indexación parcial de mysql, indexación inversa
- 9. ordenar una matriz multidimensional utilizando array_multisort
- 10. Extraer columna de data.frame como un vector
- 11. ¿Cómo alterno el tipo de datos de columna de tabla en más de 1 columna?
- 12. Utilizando el LDT (tabla de descriptores locales)
- 13. Posición en Vector utilizando STL
- 14. Campos booleanos de indexación
- 15. ¿Cómo se extrae una columna de una matriz multidimensional?
- 16. MySQL - Cómo actualizar una columna utilizando el valor de otra columna además de algunas cadenas
- 17. C++ ordenar en vector utilizando el objeto de función
- 18. reparación/indexación de tablas grandes y myisam_sort_buffer_size
- 19. Impresión de una matriz multidimensional utilizando bucles Foreach única
- 20. ¿por qué necesito operadores de comparación en la suite de indexación de vector de boost python?
- 21. MATLAB pregunta indexación
- 22. Tabla de búsqueda utilizando SIMD
- 23. WPF Tabla Columna Tamaños
- 24. ¿La indexación de una tabla SQL mejorará el rendimiento de una instrucción LINQ?
- 25. Fila de tabla contenteditable, modificador de columna
- 26. ¿Cómo obtengo el tipo de columna de la tabla?
- 27. LINQ: Obtener nombres de columna de tabla
- 28. La indexación mejorará el rendimiento de consultas varchar (max) y cómo crear el índice
- 29. SQL actualiza una columna de otra columna en otra tabla
- 30. Columna congelada o columna fija en la tabla de datos
Gracias por la expansión de @ respuesta de ttmacer . Muy agradable. –