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.
.