我具有以下功能,旨在对数据集中的几个(但不是全部)变量用1946替换小于1946的值:
myFun <- function(data, var){
data[, var] <- lapply(data[, var], FUN = function(x){
x[x < 1946] <- 1946
x
}
)
return(data)
}
在简单的测试data.frame上尝试时,它可以正常工作,但是在实际数据集(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