从函数获取数据帧到工作区

问题描述 投票:0回答:1

我有一个相当简单的函数,其中包含一个 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)
试图将数据框分配给一个对象,但这也不起作用。显然我缺少一些简单的东西。

r
1个回答
0
投票

我认为你可以尝试 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的数据框了

© www.soinside.com 2019 - 2024. All rights reserved.