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.
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()
conmeuse
ymeuse$zinc
como entradas, y omitirá los valoresNA
en la columna"zinc"
. El objeto resultante será devuelto por la función y almacenado enmeuse_new
.