R:在tidyverse中创建函数
我有一些假数据:R:在tidyverse中创建函数,r,function,tidyverse,R,Function,Tidyverse,我有一些假数据: 库(tidyverse) df% ###不同的检查 #var5中不应缺少任何值 df%>%过滤器(is.na(var5))%>%添加错误(“var5中有NAs”) #var3应大于var4 df%%>%过滤器(var3%添加错误(“var3小于var4”) # ... 等 然后我必须定义函数add\u errors(): 定义函数 错误我们可以在控制台上打印错误消息 add_errors <- function(dat, error) { glue::glue(
库(tidyverse)
df%
###不同的检查
#var5中不应缺少任何值
df%>%过滤器(is.na(var5))%>%添加错误(“var5中有NAs”)
#var3应大于var4
df%%>%过滤器(var3%添加错误(“var3小于var4”)
# ... 等
然后我必须定义函数add\u errors()
:
定义函数
错误我们可以在控制台上打印错误消息
add_errors <- function(dat, error) {
glue::glue("{error} at id: {toString(dat[['id']])}")
}
t
是一个临时文件,也可以将其写入自定义目标文件夹我们可以在控制台上打印错误消息
add_errors <- function(dat, error) {
glue::glue("{error} at id: {toString(dat[['id']])}")
}
t
是一个临时文件,也可以将其写入自定义目标文件夹中以下代码的作用与您的要求类似。我尝试在不将errors数据帧作为参数传递的情况下执行此操作,但最终不会在函数外部更改errors变量
errors=data.frame(id=numeric(), errormessage=character())
add_errors=function(df, errormessage) {
return(bind_rows(errors, data.frame(id=df$id, errormessage=errormessage)))
}
errors=df %>% filter(is.na(var5)) %>% add_errors("There are NAs in var5")
errors=df %>% filter(var3 > var4) %>% add_errors("var3 is smaller than var4")
输出:
> print(errors)
id errormessage
1 3 There are NAs in var5
2 2 var3 is smaller than var4
3 3 var3 is smaller than var4
4 7 var3 is smaller than var4
5 8 var3 is smaller than var4
6 9 var3 is smaller than var4
7 12 var3 is smaller than var4
8 16 var3 is smaller than var4
9 18 var3 is smaller than var4
下面的代码执行与您要求的类似的操作。我尝试在不将errors数据帧作为参数传递的情况下执行此操作,但最终不会在函数外部更改errors变量
errors=data.frame(id=numeric(), errormessage=character())
add_errors=function(df, errormessage) {
return(bind_rows(errors, data.frame(id=df$id, errormessage=errormessage)))
}
errors=df %>% filter(is.na(var5)) %>% add_errors("There are NAs in var5")
errors=df %>% filter(var3 > var4) %>% add_errors("var3 is smaller than var4")
输出:
> print(errors)
id errormessage
1 3 There are NAs in var5
2 2 var3 is smaller than var4
3 3 var3 is smaller than var4
4 7 var3 is smaller than var4
5 8 var3 is smaller than var4
6 9 var3 is smaller than var4
7 12 var3 is smaller than var4
8 16 var3 is smaller than var4
9 18 var3 is smaller than var4
我知道这个问题是关于创建一个自定义函数来检查错误。但是有一个很好的名为{pointblank}的包,它正是为这种任务而设计的
我们可以设置一个所谓的“代理”并“询问”它,以获得一个好的报告,而不是设置一个名为error
的data.frame
。有多个备选工作流可用于检查错误,如中所述。下面是一个可能的方法来使用该软件包解决您的问题
库(dplyr)
图书馆(空白点)
df%
列值不为空(var5)%
列值不在集合中(
vars(var3_lt_4),
前提条件=~.%>%dplyr::mutate(var3\u lt\u 4=var3>var4),
设置=假)%>%
询问
代理人
我知道这个问题是关于创建一个自定义函数来检查错误。但是有一个很好的名为{pointblank}的包,它正是为这种任务而设计的
我们可以设置一个所谓的“代理”并“询问”它,以获得一个好的报告,而不是设置一个名为error
的data.frame
。有多个备选工作流可用于检查错误,如中所述。下面是一个可能的方法来使用该软件包解决您的问题
库(dplyr)
图书馆(空白点)
df%
列值不为空(var5)%
列值不在集合中(
vars(var3_lt_4),
前提条件=~.%>%dplyr::mutate(var3\u lt\u 4=var3>var4),
设置=假)%>%
询问
代理人
最后我需要一个data.frame,它有两列:1。包含错误的案例的ID,2。错误消息itself@D.Studer请查看更新的解决方案谢谢,太好了!还有一件事:所有的错误消息都应该写在同一个data.frame中。@D.Studer我用logger
更新了一个更通用的功能,最后我需要一个data.frame,它有两列:1。包含错误的案例的ID,2。错误消息itself@D.Studer请查看更新的解决方案谢谢,太好了!还有一件事:所有错误消息都应该写在同一个data.frame中。@D.Studer我用logger
更新了一个更通用的功能,谢谢,太好了!不幸的是,我需要在最后一个data.frame中包含所有不同的错误消息,因此函数需要访问在函数外部定义的data.frame。谢谢,这很好!不幸的是,我需要在最后一个data.frame中包含所有不同的错误消息,因此函数需要访问在我猜的函数外部定义的data.frame。