У меня есть следующая функция, предназначенная для замены значений, меньших, чем 1946 г., на 1946 г. для нескольких (но не всех) переменных в наборе данных:
myFun <- function(data, var){
data[, var] <- lapply(data[, var], FUN = function(x){
x[x < 1946] <- 1946
x
}
)
return(data)
}
При испытании его на простых тестовых данных.кадр, он работает нормально, но при запуске функции с переменными в фактическом наборе данных (sf) я получаю следующую ошибку:
Error in Ops.sfc(x, 1946) : operation < not supported
Сначала я думал, что может бытьпроблема со значениями NA, но добавление na.rm = TRUE
в функцию ничего не сделало.Я также пытался заключить в двойные и одинарные кавычки <
, но это привело к ошибке в функции.В реальных данных переменные, которые я хочу заменить, являются целыми числами.
Это синтаксис теста, который я провел, где функция работает:
df1 <- data.frame("var1" = c(1942:1947), "var2" = c(1943:1947, NA), "var3" = rep(1945, times = 6))
variables <- c("var3", "var2")
df1 <- muFun(data = df1, var = variables)
> df1
var1 var2 var3
1 1942 1946 1946
2 1943 1946 1946
3 1944 1946 1946
4 1945 1946 1946
5 1946 1947 1946
6 1947 NA 1946