gpt4 book ai didi

r - R 4.2.0 更改后如何使用具有 2 个或更多条件的 'if' 语句

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

我有使用 if 语句来评估值是否大于 0.25 的代码。有时,引导代码会提交两个相等的评估记录。我的 if 语句将在执行时发出警告“条件长度 > 1,并且仅使用第一个元素”,这对于我的应用程序来说是可以接受的行为,因此我在评估周围抛出了抑制警告并继续。今天,更新到 R 4.2.0 后,相同的代码会生成错误“Error in if ....: the condition has length > 1

我找不到有关更改的文档(可能是因为它是新的)。有关如何规避此问题的建议或对正在发生的情况的任何解释都会有所帮助。 FWIW if 语句中还发生了很多事情,因此切换到 ifelse 在这里并不实际。这是一些可复制的代码:

   a<-c(1,1)
b<-1
if(b > .25){print(b)}
if(a > .25){print(a)}

输出:

> a<-c(1,1)
> b<-1
> if(b > .25){print(b)}
[1] 1
> if(a > .25){print(a)}
Error in if (a > 0.25) { : the condition has length > 1
>

我愿意

suppressWarnings(if(a > .25){print(a)}) 

打印

最佳答案

在 R 新闻中我们看到

CHANGES IN R 4.2.0
SIGNIFICANT USER-VISIBLE CHANGES
...
- Calling if() or while() with a condition of length
greater than one gives an error rather than a warning.
Consequently, environment variable
_R_CHECK_LENGTH_1_CONDITION_ no longer has any effect.

显然,您应该做一些对您的用例有意义的事情。根据您的描述,您之前所做的只是检查第一个元素是否与存在多个元素的条件匹配。

所以看来最简单的解决方法就是将子集设置为第一个元素。所以使用

if(a[1] > .25)

而不是

if(a > .25)

如果 a 中只有一个元素,则无需担心。如果 a 中有更多元素,那么您将退回到之前的检查,仅查看第一个元素。如果这对您的用例有好处,那就太好了 - 但听起来您确实应该评估为什么有时会获得多个元素,以及您是否真正想要的是只查看第一个元素。

关于r - R 4.2.0 更改后如何使用具有 2 个或更多条件的 'if' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72535286/

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