【问题标题】:Remove missing values with user defined function使用用户定义的函数删除缺失值
【发布时间】:2021-03-04 15:37:37
【问题描述】:

我有一个数据集作为缺失值的数据。

a <- sample(1:100,15)
b <- sample(1:20,15)
data <- data.frame(a,b)
data[c(3,6,8,12),2] <- NA
data

现在我想一次删除一个变量缺失值的行。 (不想使用 na.omit() )。我写了以下函数,但它不起作用。

rmv_missing <- function(y,z){
z <- z[is.na(z$y) == TRUE,]
return(z)
}
rmv_missing("b",data)

这个也试过了...

library(dplyr)
na_values <- function(x,y,z){
z <- (filter(z,!is.na(y)))
return(z)
}
rmv_missing("b",data)

这些功能都不起作用。有人可以帮助我了解我在哪里犯了错误并纠正代码。提前致谢。

【问题讨论】:

    标签: r user-defined-functions


    【解决方案1】:

    首先,您实际上并不需要“== T”,因为“is.na”函数已经吐出了一个逻辑向量。另一个问题是,以“data$b”的形式访问 data.frame 在函数中不起作用。因此,请执行以下操作etvoilà

    rmv_missing <- function(y,z)
    {
      print(z$y) # Does not work
      print(z[, y]) # Works
      
      z[is.na(z[, y]),]
    }
    
    rmv_missing("b",data)
    # NULL
    # [1]  9 16 NA  5 13 NA  8 NA 11 17 20 NA 10 12  1
    #     a  b
    # 3  33 NA
    # 6  59 NA
    # 8  81 NA
    # 12 26 NA
    

    【讨论】:

    • 非常感谢!您的建议帮助我理解并纠正了我的错误。
    猜你喜欢
    • 2021-06-25
    • 2018-03-09
    • 2020-10-01
    • 1970-01-01
    • 2017-04-20
    • 2013-05-03
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多