es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dos comandos equivalentes dan diferentes resultados en r.

¿Por qué no dan los dos comandos el mismo resultado?

x <- sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5))
  sum(x==1)

sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5)) %>%
  sum(.==1)

El primer comando siempre me da la respuesta correcta (algo alrededor de 25) pero el segundo comando muestra un número demasiado alto como 52. ¿Qué malinterprete sobre el operador de tubería aquí?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la que los dos comandos no devuelven la misma salida se debe a cómo funciona el operador de tubería (%>%) en el segundo comando. La porción sum(.==1) se aplica a todo el vector devuelto por sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5)) en lugar de sólo la porción ==1. Esto se debe a que el . en el segundo comando hace referencia a todo el vector que está siendo enviado por la tubería, en lugar de sólo la porción ==1.

    Para lograr el mismo resultado que el primer comando usando el operador de tubería, se pueden usar paréntesis para asegurarse de que sólo la porción ==1 se está sumando:

    sample(0:1, 50, replace = TRUE, prob = c(0.5, 0.5)) %>%
      (sum(.==1))
    

    Esto devolverá la suma correcta del número de unos en el vector.

Comments are closed.