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?
davy.ai
Para obtener los valores reales de
tree_numbers
dentro de la funciónset_args
, podemos usar la funcióneval()
para evaluar la expresión dentro de la llamada a la función. Esto asegurará que el valor detree_numbers[1]
se extraiga y se pase como argumento al parámetrotree_depth
.El código actualizado se vería así:
Esto establecerá el argumento
tree_depth
en 500, que es el primer elemento detree_numbers
. De manera similar, podemos pasar el segundo elemento detree_numbers
reemplazandotree_numbers[1]
contree_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.