gpt4 book ai didi

r - 如何为返回数据帧的函数编写单元测试

转载 作者:行者123 更新时间:2023-12-02 03:30:03 29 4
gpt4 key购买 nike

我正在编写一个最终返回数据帧的脚本。我的问题是,是否有关于如何使用单元测试包来确保返回的数据帧正确的良好实践。 (我是一名初级 R 程序员,而且对单元测试的概念还很陌生)

我的脚本实际上如下所示:

# initialize data frame
df.out <- data.frame(...)

# function set
function1 <- function(x) {...}
function2 <- function(x) {...}

# do something to this data frame
df.out$new.column <- function1(df.out)

# do something else
df.out$other.new.column <- function2(df.out)

# etc ....

...最终我得到了一个包含许多新列的数据框。但是,使用单元测试来测试生成的数据帧是否符合预期的最佳方法是什么?

到目前为止,我已经创建了单元测试来检查每个函数的结果,但我想确保一起运行所有这些函数会产生预期的结果。我看过Hadley Wickham's page on testing但看不到任何关于返回数据帧时要做什么的明显信息。

迄今为止我的想法是:

  • 手动创建预期的数据框
  • 使用 expect_that 或类似方法检查输出是否等于此数据帧

关于在哪里寻找指导有什么想法/指示吗?迄今为止,我的 Google-fu 在这方面让我相当失望。

最佳答案

你的直觉似乎是正确的。根据函数的预期输出手动构造一个 data.frame,然后将其与函数的输出进行比较。

# manually created data
dat <- iris[1:5, c("Species", "Sepal.Length")]

# function
myfun <- function(row, col, data) {
data[row, col]
}

# result of applying function
outdat <- myfun(1:5, c("Species", "Sepal.Length"), iris)

# two versions of the same test
expect_true(identical(dat, outdat))
expect_identical(dat, outdat)

如果您的 data.frame 可能不同相同,您还可以在 data.frame 的某些部分运行测试,包括:

  • dim(outdat),检查大小是否正确
  • 属性(outdat)或列的属性
  • sapply(outdat, class),检查变量类
  • 变量的汇总统计信息(如果适用)
  • 等等

关于r - 如何为返回数据帧的函数编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com