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.

Forzando a R a aplicar una función o llamar a una variable dentro de un argumento de la función set_args.

Mientras intento usar los índices para extraer un elemento de un vector o llamar a una función dentro de la función set_args de la biblioteca parsnip;

biblioteca(parsnip)
tree_numbers = c(500, 1000)
boost_tree() %>% set_args(tree_depth = tree_numbers[1])

Me enfrento a esta situación y el resultado del código anterior es;

Boosted Tree Model Specification (unknown)

Argumentos principales:
tree_depth = tree_numbers[1]

En lugar de llamar al resultado de tree_numbers[1] que es 500, la función toma directamente tree_depth = tree_numbers[1] como una cadena. Para cualquier otro argumento de funciones con la misma lógica, puedo llamar o extraer el valor 500. Parece que cualquier cosa que se escriba dentro de set_args se toma directamente como cadenas y la función lo decodifica posteriormente.

¿Cuál es la solución a esta situación para obtener 500 o 1000, que son los elementos del vector tree_numbers dentro de la función set_args?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener los valores reales de tree_numbers dentro de la función set_args, podemos usar la función eval() para evaluar la expresión dentro de la llamada a la función. Esto asegurará que el valor de tree_numbers[1] se extraiga y se pase como argumento al parámetro tree_depth.

    El código actualizado se vería así:

    library(parsnip)
    tree_numbers  = c(500, 1000)
    boost_tree() %>% set_args(tree_depth = eval(tree_numbers[1]))
    

    Esto establecerá el argumento tree_depth en 500, que es el primer elemento de tree_numbers. De manera similar, podemos pasar el segundo elemento de tree_numbers reemplazando tree_numbers[1] con tree_numbers[2].

    Usar la función eval() dentro de la llamada a la función es un truco útil para pasar variables como argumentos en R.

Comments are closed.