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.

Extrayendo el nombre de la variable como una cadena en un Marco de Datos de Polígonos Espaciales.

Necesito escribir una función que omita los valores NA de un Spatial Polygons Data Frame, pero solo para una columna. Actualmente estoy usando

sp.na.omit(col.name= )

El problema es que la entrada en la función tiene el formato

spatialdf$variable

y para que la función funcione, necesita el nombre de la variable como un string, es decir, “variable”. No puedo encontrar una manera de extraer “variable” de “spatialdf$variable”.

select() de dplyr no funciona porque es un SpatialPolygonsDataFrame.

Ejemplo mínimo reproducible:

library(sp)
library(spatialEco)
data(meuse)
coordinates(meuse) = ~x+y

myfunction <- function (data, variable){
  data <- sp.na.omit(data, col.name = variable)
}

myfunction(meuse, "zinc")

Mi problema es que para la función que estoy usando actualmente, “zinc” debe ingresarse como meuse$zinc en todas las demás instancias, pero para este caso específico, necesito que sea un string.

¿Cómo puedo tomar meuse$zinc y obtener “zinc”?

Agradecería mucho cualquier ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer el nombre de la variable como una cadena, puedes utilizar la función deparse(substitute()). Esto convertirá meuse$zinc en la cadena de texto "zinc".

    Aquí tienes una versión actualizada de tu función que debería funcionar:

    “`{r}
    myfunction <- function (data, variable){
    variable <- deparse(substitute(variable))
    data <- sp.na.omit(data, col.name = variable)
    return(data)
    }

    meuse_new <- myfunction(meuse, meuse$zinc)
    “`

    Ahora puedes llamar a myfunction() con meuse y meuse$zinc como entradas, y omitirá los valores NA en la columna "zinc". El objeto resultante será devuelto por la función y almacenado en meuse_new.

Comments are closed.