【发布时间】:2021-05-30 10:39:52
【问题描述】:
我有一些假数据:
library(tidyverse)
df <- data.frame(id = 1:20,
var1 = sample(c(0,1), size = 20, replace = T),
var2 = round(runif(20, min = 0, max = 100),0),
var3 = round(runif(20, min = 0, max = 100),0),
var4 = round(rnorm(20, mean = 50, sd = 20)),
var5 = sample(c(1:19, NA), size=20))
然后,我想对这些数据做一些检查:。有错误和错误消息的行的 ID 应该放在 data.frame errors 中。我想使用管道运算符 %>%
### Different checks
# There should be no missing values in var5
df %>% filter(is.na(var5)) %>% add_errors("There are NAs in var5")
# var3 should be greater than var4
df %>% filter(var3 < var4) %>% add_errors("var3 is smaller than var4")
# ... etc.
那我要定义函数add_errors():
### Define function
errors <- data.frame(id = numeric(), errormessage = character())
add_errors <- function(dat, error){
errors <<- add_case(errors, id = dat[['id']], errormessage = error)
}
【问题讨论】: