【发布时间】:2019-07-10 11:04:22
【问题描述】:
我对编写函数很陌生,并且正在编写一个通用函数,该函数将应用于数据框中的多个(但不是全部)行。该函数应该有条件地转换这些指定行的值。
示例数据:
df <- data.frame("Var1" = c(0:5), "Var2" = c(-5:0), "Var3" = c(0,0,0,0,0,0)
> df
Var1 Var2 Var3
1 0 -5 0
2 1 -4 0
3 2 -3 0
4 3 -2 0
5 4 -1 0
6 5 0 0
示例函数:
myFun <- function(x, na_value){
x[x == na_value] <- NA
x
}
鉴于我希望 Var1 和 Var 2 的 0 转换为 NA - 但不是 Var3,我已经编写了 df$Var1 <- myFun(df$Var1, 0) 和 df$Var2 <- myFun(df$Var2, 0) - 但是必须有一种更简单的方法吗?
我的设想类似于myFun(Var1, Var2, 0),它将 Var1 和 Var2 中的 0 转换为 NA,而无需为这两个变量重复代码。该函数将应用于具有不同变量名和不同 na_values 的多个数据帧,这就是我首先编写它的原因,它工作正常,但我想进一步简化。
【问题讨论】:
-
另一种可能性:
df[, c("Var1", "Var2")][df[, c("Var1", "Var2")] == 0] <- NA