Home > Enterprise >  Why is this R function not replacing a specific value in a given data set?
Why is this R function not replacing a specific value in a given data set?

Time:10-12

I'm using this dataset and am trying to replace a very specific NA value in its trans column. Since the value is unknown, my best attempt at fixing the value without removing the whole row is to subsitute it with the most common trans value among rows that share other important attributes. No errors are being generated but the NA value is not being replaced. What am I missing?

library(fueleconomy)
library(data.table)

get(data("vehicles", package = "fueleconomy"))

sub_na_trans <- function(match) {
  vehicles[match & is.na(vehicles$trans), ] <- data.frame(replace_na(
    vehicles[match & is.na(vehicles$trans), ],
    list(trans = setDT(vehicles[match, ])[, N:=.N, trans][N==max(N)][, N:=NULL]$trans[1])))
}

sub_na_trans(vehicles$make == 'Ford' &
              vehicles$model == 'F150 Pickup 2WD' &
              vehicles$year == 1984 &
              vehicles$class == 'Standard Pickup Trucks 2WD')

CodePudding user response:

OK.

Change <- to <<- within your function.

vehicles[match & is.na(vehicles$trans), ] <- 

vehicles[match & is.na(vehicles$trans), ] <<- 

We can refer global variable's value from inside a function.

But we cannot change it with <- there in R.

For such purpose, we can use <<- instead.

.

https://stackoverflow.com/a/40650820/11634537

How do you use "<<-" (scoping assignment) in R?

  •  Tags:  
  • r
  • Related