gpt4 book ai didi

r - (R) IF 语句 : stop & warn if FALSE else continue

转载 作者:行者123 更新时间:2023-12-01 11:37:55 25 4
gpt4 key购买 nike

我正在创建一个函数,在它执行任何困难的事情之前,我需要检查“样本”数据集中列出的所有列名称是否也存在于“网格”数据集中(该函数将一个映射到另一个) .

all(names(samples[expvar]) %in% names(grids))

这是这样做的:all() 中的代码询问“samples”中列的列表(“expvar”)中的所有名称是否也是“grids”中的名称。正确 length=3 的输出, expvar将是 TRUE TRUE TRUE . 'all' 询问是否全部为 TRUE,因此此处的输出为 TRUE。我想在以下方面做一个 IF 语句:
if(all(names(samples[expvar]) %in% names(grids)) = FALSE) {stop("Not all expvar column names found as column names in grids")}

不需要其他的,它会继续。问题是 '= FALSE' 是多余的,因为 all() 是一个逻辑上可评估的语句......是否有“继续”功能,例如
if(all(etc)) CARRYON else {stop("warning")}

或者,有人能想出一种方法来重组它以使其工作吗?

最佳答案

您正在寻找函数 stopifnot .

但是,您不需要将其实现为

if (okay) {
# do stuff
} else {
stop()
}

这就是你所拥有的。相反,你可以做
if (!okay) {
stop()
}
# do stuff

因为这些行将按顺序执行。但是,同样,使用 stopifnot 可能更具可读性。 ,如:
stopifnot(okay)
# do stuff

关于r - (R) IF 语句 : stop & warn if FALSE else continue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477724/

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