Establecer valor de columna dinámicamente en una función

max23fx

Estoy tratando de establecer un valor de columna dinámicamente creando una función y definiendo qué columna quiero crear y qué columna quiero evaluar a través de expresiones regulares. Hasta ahora, la función siguiente funciona cuando uso la construcción "ifelse". Pero no puedo pensar en una manera de omitir el "más" y dejar el valor de la columna si mi expresión regular no coincide.

Lo que quiero lograr es que también después de la segunda llamada a mi función "set_column_value_by_regex", los quattro-modelos, que coincidieron en mi primera llamada, todavía tengan el valor TRUE en la columna "four_wheel_drive". Actualmente esto se sobrescribe, como se ve en la salida.

library(tidyverse)
#> Warning: package 'dplyr' was built under R version 3.5.2
#> Warning: package 'stringr' was built under R version 3.5.2

set_column_value_by_regex <- function(my_dataframe,target_column,test_column,regex,value_true,value_false="") {
  my_dataframe[[target_column]] <- ifelse(str_detect(my_dataframe[[test_column]],regex),yes = value_true, no = value_false)
  return(my_dataframe)
}

new_mpg <- set_column_value_by_regex(mpg,"four_wheel_drive","model","quattro",TRUE,FALSE)
new_mpg <- set_column_value_by_regex(new_mpg,"four_wheel_drive","model","4wd",TRUE,FALSE)

new_mpg %>%  
  select(model,four_wheel_drive) %>%  
  distinct(model,.keep_all = TRUE) %>% 
  head()
#> # A tibble: 6 x 2
#>   model              four_wheel_drive
#>   <chr>              <lgl>           
#> 1 a4                 FALSE           
#> 2 a4 quattro         FALSE           
#> 3 a6 quattro         FALSE           
#> 4 c1500 suburban 2wd FALSE           
#> 5 corvette           FALSE           
#> 6 k1500 tahoe 4wd    TRUE

Creado el 2020-10-25 por el paquete reprex (v0.2.0).

David J. Bosak

Esta es una especie de función inusual, y parece que podría hacerlo de una manera más sencilla. Pero solo responderé tu pregunta:

El problema no es su función, sino lo que está pasando a la función. En la segunda llamada, le dijo a la función que reemplazara el valor con FALSE si no coincidía, por lo que la función hizo lo que dijo. Si desea que mantenga el valor original, pase el valor original a la función. Al igual que:

library(tidyverse)
#> Warning: package 'dplyr' was built under R version 3.5.2
#> Warning: package 'stringr' was built under R version 3.5.2

set_column_value_by_regex <- function(my_dataframe,target_column,test_column,regex,value_true,value_false="") {
  my_dataframe[[target_column]] <- ifelse(str_detect(my_dataframe[[test_column]],regex),yes = value_true, no = value_false)
  return(my_dataframe)
}

new_mpg <- set_column_value_by_regex(mpg,"four_wheel_drive","model","quattro",TRUE,FALSE)
new_mpg <- set_column_value_by_regex(new_mpg,"four_wheel_drive","model","4wd",TRUE,new_mpg$four_wheel_drive)

new_mpg %>%  
  select(model,four_wheel_drive) %>%  
  distinct(model,.keep_all = TRUE) %>% 
  head()

# # A tibble: 6 x 2
# model              four_wheel_drive
# <chr>              <lgl>           
# 1 a4                 FALSE           
# 2 a4 quattro         TRUE            
# 3 a6 quattro         TRUE            
# 4 c1500 suburban 2wd FALSE           
# 5 corvette           FALSE           
# 6 k1500 tahoe 4wd    TRUE  

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Establecer el valor de una columna en función del valor de otra columna en R

Establecer el valor de una columna en función de tres condiciones de otra columna

Establecer el valor de columna de una vista en función de la tabla que selecciono

Establecer dinámicamente el setter en función del valor

Elija dinámicamente una de las dos columnas en función de una tercera columna

¿Cómo establecer dinámicamente el valor de una propiedad de objeto en el estado reactJS?

Establecer dinámicamente el valor de una entrada de archivo

Mula 4: Dataweave: consulta una clave dinámicamente en función de un valor

Establecer dinámicamente el valor inicial de una cortadora

Buscando establecer un valor de casilla de verificación en VERDADERO en una hoja de Google en función del valor de otra columna

¿Cómo asignar dinámicamente todos los meses en función de una columna en condición en SQL Server?

¿Cómo asignar dinámicamente todos los meses en función de una columna en condición en SQL Server?

¿Cómo asignar dinámicamente todos los meses en función de una columna en condición en SQL Server?

Dividir dinámicamente columnas SQL en varias columnas en función de un valor de columna diferente

Mute dinámicamente una columna en función de una cadena de caracteres fija y todos los valores secuenciales posibles

Establecer valor dinámicamente según el encabezado de la columna y la intersección de la fila de destino

Valor de 2. fecha más alta en una columna - dinámicamente

Establecer dinámicamente el ancho de una columna en la vista de recursos vertical de calendario completo

Establecer automáticamente el valor de una columna desde una función o consulta

Establecer el valor de una columna en NA según las condiciones en R

Pandas: no se puede establecer un valor de celda basado en una condición en otra columna

Cambiar dinámicamente un icono según el valor de una columna

¿Cómo establecer dinámicamente un valor predeterminado en un dcc.Dropdown cuando las opciones provienen de una devolución de llamada?

Establecer un valor en una función como una variable fuera de la función (Swift)

¿Cómo puedo establecer dinámicamente una fecha de finalización en función de una fecha de inicio determinada y la duración del plazo?

Simplemente establecer un valor predeterminado frente a establecer una RESTRICCIÓN en una columna en SQL Server

Construyendo dinámicamente una función de renderizado en React

¿Cómo cambiar el color de una celda de tabla HTML (creada dinámicamente) en función de un valor?

¿Puede establecer el valor predeterminado de una columna en función de los cálculos de las dos columnas anteriores en SQLite?

TOP Lista

CalienteEtiquetas

Archivo