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.

Calcula la fórmula a partir de una cadena guardada en una variable.

Lo siento, pero estoy luchando con un problema bastante simple: una fórmula/una expresión como 1.28*10^2 se guarda como un carácter en un marco de datos. Ahora quiero convertir esta cadena en un valor numérico: esto debería dar como resultado “128”, pero no lo hace.

library(dplyr)

mydata <- data.frame(
  formula = c("5.89*10^3", "1.28*10^2", "4.11*10^5")
)

mydata <- mydata %>% 
  dplyr::mutate(eval = eval(parse(text = formula)))

La variable “eval” debería contener los valores 5890, 128 y 411000 al final.

¿Alguien puede ayudarme a ver dónde está mi error? ¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que las funciones eval() y parse() no son adecuadas para convertir una cadena de caracteres que representa una expresión matemática, como “1.28*10^2”, en valores numéricos. En su lugar, podemos utilizar la función sapply() junto con las funciones gsub() y as.numeric() para lograr el resultado deseado.

    mydata$eval <- sapply(mydata$formula, function(x) as.numeric(gsub("\\^","e",x)))
    

    La función gsub() reemplaza el símbolo “^” con el símbolo “e” para que la cadena de caracteres en notación científica sea reconocible como un valor numérico por la función as.numeric(). El resultado será un vector numérico con valores 5890, 128 y 411000.

    print(mydata$eval)
    # Resultado: 5890   128 411000
    

Comments are closed.