【发布时间】:2021-06-29 19:22:36
【问题描述】:
我下面的函数foo() 产生3 种类型的消息。其中两个是message()创建的,一个是cat()创建的。
假设我通过lapply() 多次致电foo()。
我想知道if() 我的lapply() 电话中是否有任何error message(包含术语错误的第二条消息)?
注意:我不想使用stop 或warning。
foo <- function(dat_obj) {
v1 <- sapply(names(dat_obj), function(i) length(unique(dat_obj[[i]])))
i1 <- names(which(v1 != 1))
if(length(i1) == 1) {
message(paste("Note: potential problem in",i1))
} else if(length(i1) > 1) {
message(paste("Error: fatal problem in x & y."))
} else {
cat(paste("OK: No issues detected.\n"))
}
}
#----- EXAMPLE OF USE:
INPUT <- list(
A = data.frame(x = c(1,1,1,1), y = c(2,4,3,3)),
B = data.frame(x = c(1,2,1,1), y = c(3,3,3,3)),
C = data.frame(x = c(1,2,1,1), y = c(3,2,3,3)),
D = data.frame(x = c(1,1,1,1), y = c(3,3,3,3)))
invisible(lapply(INPUT, foo))
#----- OUTPUT:
#Note: potential problem in y
#Note: potential problem in x
#Error: fatal problem in x & y.
#OK: No issues detected.
【问题讨论】:
-
message和cat都返回不可见的NULL。也许尝试不同的逻辑。 -
@RonakShah,我想知道
if()我们有任何来自我的lapply()电话的error message(包含error术语的第二条消息)? -
@RuiBarradas,确定喜欢什么?
-
就像我的回答,或者@RonakShah's。
标签: r list function dataframe error-handling