Saltar al contenido principal
LibreTexts Español

8.3: Declaraciones condicionales

  • Page ID
    151684
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Un segundo tipo de control de flujo que proporcionan los lenguajes de programación es la capacidad de evaluar declaraciones condicionales. A diferencia de los bucles, que pueden repetirse una y otra vez, una sentencia condicional solo se ejecuta una vez, pero puede cambiar entre diferentes comandos posibles dependiendo de una CONDICIÓN que sea especificada por el programador. El poder de estos comandos es que permiten al propio programa tomar decisiones, y en particular, hacer diferentes elecciones dependiendo del contexto en el que se ejecute el programa. El ejemplo más destacado de una declaración condicional es la declaración if, y la declaración else que la acompaña. El formato básico de una sentencia if en R es el siguiente:

    if ( CONDITION ) {
            STATEMENT1
            STATEMENT2
            ETC
         }

    Y la ejecución de la declaración es bastante sencilla. Si la CONDICIÓN es verdadera, entonces R ejecutará las sentencias contenidas en las llaves. Si la CONDICIÓN es falsa, entonces no dosifica. Si lo desea, puede extender la sentencia if para incluir también una sentencia else, lo que lleva a la siguiente sintaxis:

     if ( CONDITION ) {
            STATEMENT1
            STATEMENT2
            ETC
         } else {
            STATEMENT3
            STATEMENT4
            ETC
         }     

    Como era de esperar, la interpretación de esta versión es similar. Si la CONDICIÓN es verdadera, entonces se ejecuta el contenido del primer bloque de código (es decir, STATEMENT1, STATEMENT2, ETC); pero si es falso, entonces se ejecuta el contenido del segundo bloque de código (es decir, ESTADO3, ESTADO4, ETC) en su lugar.

    Para darte una idea de cómo puedes usar si y si no para hacer algo útil, el ejemplo que te voy a mostrar es un guión que imprime un mensaje diferente dependiendo del día de la semana que lo ejecutes. Podemos hacer esto haciendo uso de algunas de las herramientas que discutimos en la Sección 7.11.3. Aquí está el guión:

    ## --- ifelseexample.R
    # find out what day it is...
    today <- Sys.Date()       # pull the date from the system clock
    day <- weekdays( today )  # what day of the week it is_
    
    # now make a choice depending on the day...
    if ( day == "Monday" ) {
      print( "I don't like Mondays" )
    } else {
      print( "I'm a happy little automaton" )
    }
    ## [1] "I'm a happy little automaton"

    Ya que hoy pasa a ser domingo, cuando ejecuto el guión esto es lo que pasa:

    source( "./rbook-master/scripts/ifelseexample.R" )
    ## [1] "I'm a happy little automaton"

    Hay otras formas de hacer declaraciones condicionales en R. En particular, la función ifelse () y las funciones switch () pueden ser muy útiles en diferentes contextos. No obstante, mi principal objetivo en este capítulo es cubrir brevemente lo básico, así que voy a seguir adelante.


    This page titled 8.3: Declaraciones condicionales is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.