Creo que no soy un programador y ciertamente no contribuyo con la fuente R. Creo que puede deberse a que necesita algún tipo de marcador para indicar que algo ocurrió aquí, pero no se devolvió nada. Esto se vuelve más evidente con cosas como tables
y split
. Por ejemplo, cuando crea una tabla de valores y dice que hay cero de esa celda, debe mantener que esa celda hecha de una cadena en un vector no tiene valores. no sería apropiado tener x[0]==0
ya que no es el valor numérico de cero sino la ausencia de cualquier valor.
Así que en las siguientes divisiones que necesitamos un marcador de posición y integer(0)
ocupa el lugar de ningún valor devuelto que no es lo mismo que 0. Aviso para el segundo vuelve numeric(0)
que todavía es un marcador de posición indicando que era el lugar numérico poseedor.
with(mtcars, split(as.integer(gear), list(cyl, am, carb)))
with(mtcars, split(gear, list(cyl, am, carb)))
Así que en cierto modo en que mi x[FALSE]
réplica es cierto, ya que ocupa el lugar de la mancha inexistente cero en el vector.
De acuerdo, esta balonga que acabo de vomitar es cierta hasta que alguien la discute y la derriba.
página PS 19 de esta guía (LINK) afirman que integer() and integer(0) are empty integer.
relacionados, de manera mensaje:How to catch integer(0)?
Por la misma razón x [FALSO] hace –
@TylerRinker: Prima facie, es una pregunta interesante, ya que 'x [0]', que no se ha definido explícitamente, devuelve 'entero (0)', mientras 'x [11] ', que tampoco se ha definido explícitamente, devuelve' NA'. Además, la asignación explícita de 'x [0] <- 5' no devuelve ningún error o advertencia, pero' x [0] 'sigue siendo' entero (0) '. – jthetzel
@TylerRinker, creo que entiendo por qué 'x [FALSE]' devuelve un vector de longitud cero: al extraer con lógicos (TRUE/FALSE), se necesita proporcionar un vector de la misma longitud que 'x'.Entonces en su ejemplo, 'FALSE' se recicla dando como resultado' x [rep (FALSE, length (x))] 'y no me sorprende que devuelva' integer (0) '. De la misma manera, 'x [TRUE]' devolverá 'x'. Pero no veo el enlace que haces entre 'x [0]' y 'x [FALSE]'. ¿Puedes por favor elaborar? – flodel