我是R的新手,我遇到了一个让我对语言运作方式感到困惑的问题。有一个包," validate",可以创建可用于检查数据是否符合预期的对象。 测试一些玩具数据,我发现虽然以下代码按预期工作:
library(validate)
I <- indicator(
cnt_misng = number_missing(x)
, sum = sum(x, na.rm = TRUE)
, min = min(x, na.rm = TRUE)
, mean = mean(x, na.rm = TRUE)
, max = max(x, na.rm = TRUE)
)
dat <- data.frame(x=1:4, y=c(NA,11,7,8), z=c(NA,2,0,NA))
C <- confront(dat, I)
values(C)
但是,我发现我无法创建一个函数来返回数据框任意列的指示符对象。这是我失败的尝试:
check_values <- function(data, x){
print(x)
I <- indicator(
cnt_misng = number_missing(eval(x))
, max = max(eval(x), na.rm = TRUE)
)
C <- confront(df, I)
return(C)
}
df <- data.frame(A=1:4, B=c(NA,11,7,8), C=c(NA,2,0,NA))
C <- check_values(df,'B')
values(C)
如果我有一个大型数据集,我希望能够遍历列表列表,并为列表中的每个列具有相同格式的报告。在这一点上,我可能会放弃这个包,并找到另一种更直接的方法。但是,我仍然很好奇这是如何工作的。看起来应该有一种方法来功能化这个指标对象的创建,这样我就可以重用代码来检查数据框的任意列的相同统计数据。
有什么想法吗?