我有一个相当简单的函数,其中包含一个 for 循环,将专门编码的缺失值转换为 NA:
make_na <- function(value, df){
for(thisvar in names(df)){
df[[thisvar]][df[[thisvar]] == value] <- NA
num_NA <- length(df[[thisvar]][is.na(df[[thisvar]])])
print(paste0(thisvar, " has ", num_NA, " NA's"))
}
return(df)
}
运行该函数可以正确打印修改后的数据框,但我不知道如何将数据框放回工作区。我还尝试过
new_dat <- return(df)
试图将数据框分配给一个对象,但这也不起作用。显然我缺少一些简单的东西。
我认为你可以尝试 df = make_na(value, df)。以下是一个例子。
Names <- c("Jane", "Sam", "Jose", "Amy")
Ages <- c(42, 33, 39, 25)
Locations <- factor(c("West", "West", "South", "South"))
EmpData <- data.frame(Name=Names, Age=Ages, Location=Locations)
print(EmpData)
make_na <- function(value, df){
for(thisvar in names(df)){
df[[thisvar]][df[[thisvar]] == value] <- NA
num_NA <- length(df[[thisvar]][is.na(df[[thisvar]])])
print(paste0(thisvar, " has ", num_NA, " NA's"))
}
return(df)
}
df = make_na(33, EmpData)
print(df)
这样就可以得到NA的数据框了