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.

¿Por qué la función en inglés no funciona dentro de un ifelse en RStudio?

Estoy intentando usar una función que, si la respuesta es un número pequeño (10 o menos), me dará la palabra en inglés para el número (one para 1, two para 2, etc.) y el numeral para los números más grandes. El problema con el que me encuentro es que, aunque estoy usando english::english dentro del ifelse, sigue dándome el numeral. Aquí tienes un ejemplo básico:

test_small <- 4
english::english(test_small)
ifelse(test_small < 11, english::english(test_small), test_small)
ifelse(test_small < 11, english::english(test_small), "fail")

Cuando está fuera de la declaración ifelse, english::english(test_small) produce el resultado deseado de “four”. Sin embargo, una vez que lo envuelvo en la declaración ifelse, obtengo el resultado de “4”. Para comprobar si obtengo de alguna manera el “resultado falso”, también hice la segunda declaración ifelse que simplemente mostraría la palabra “fail”. Pero no, todavía obtengo “4” y no “four” como se esperaba.

¿Algún idea de qué está pasando?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que la función ifelse devuelve un vector del mismo tipo que la entrada. En este caso, la entrada es un valor numérico, por lo que la salida también será numérica. Para obtener la representación en inglés de un pequeño entero, debes convertir la salida a texto usando la función as.character:

    test_small <- 4
    
    ifelse(test_small < 11, english::english(test_small), as.character(test_small))
    

    Esto debería darte la salida deseada de “cuatro”.

Comments are closed.