如何在没有长度警告和抑制的情况下检查向量是否为单个NA值

考德威尔斯特

我有一个NA默认具有的函数,但如果不是,则NA应该是一个不限于大小1的字符向量。我可以进行检查以验证它们的大小,但是is.na当向量是length大于1的字符向量时会产生标准警告

so_function <- function(x = NA) {
  if (!(is.na(x) | is.character(x))) {
    stop("This was just an example for you SO!")
  }
}

so_function(c("A", "B"))
#> Warning in if (!(is.na(x) | is.character(x))) {: the condition has length >
#> 1 and only the first element will be used

防止出现我的警告的一个选项是使用identical

so_function <- function(x = NA) {
  if (!(identical(x, NA) | is.character(x))) {
    stop("This was just an example for you SO!")
  }
}

在这里,我的问题是,这个函数通常会服用装入R作为输入Excel工作表数据,并NA从产生的价值往往是NA_character_NA_integer_NA_real_,因此identical(x, NA)往往是FALSE当我真正需要它TRUE

对于更广泛的上下文,我正在为一个程序包创建的S3类遇到此问题,下面的函数近似于如何验证该类的多个属性(即警告出现时)。因此,我试图避免将警告作为解决方案,因此有兴趣了解存在解决此问题的最佳实践。

编辑

为了使用例更清楚,这是在验证类的属性,在此我想确保该属性是单个NA值或任意长度的字符向量:

so_function(NA_character_) # should pass
so_function(NA_integer_) # should pass
so_function(c(NA, NA)) # should fail
so_function(c("A", "B")) # should pass
so_function(c(1, 2, 3)) # should fail
詹姆士

长度警告来自于的使用if,期望长度为1的向量,并且is.na已向量化。

您可以使用anyallis.na其压缩为长度为1的向量,但在某些极端情况下,它可能无法按预期工作,因此我将使用短路评估来检查它是否为长度1 is.na

so_function <- function(x = NA) {
  if (!((length(x)==1 && is.na(x)) | is.character(x))) {
    stop("This was just an example for you SO!")
  }
}

so_function(NA_character_) # should pass

so_function(NA_integer_) # should pass

so_function(c(NA, NA)) # should fail
Error in so_function(c(NA, NA)) : This was just an example for you SO!

so_function(c("A", "B")) # should pass

so_function(c(1, 2, 3)) # should fail
Error in so_function(c(1, 2, 3)) : This was just an example for you SO!

另一种选择是改为使用NULL默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在没有CORB警告的情况下检查URL是否存在?

来自分类Dev

如何在没有JQuery的情况下检查元素是否为最后一个子元素

来自分类Dev

如何在没有缓冲的情况下使用单个枚举检查IEnumerable的多个条件?

来自分类Dev

如何在没有警告的情况下执行resolvconf?

来自分类Dev

如何在没有Ord的情况下找到向量的最小值?

来自分类Dev

如何在没有收到TCP套接字的情况下检查是否有传入数据?

来自分类Dev

如何在没有文档的情况下检查 api?

来自分类Dev

如何在没有空格和行的情况下检查td的内容

来自分类Dev

C如何在没有编译器警告的情况下将地址打印为十进制值(非十六进制)

来自分类Dev

如何在没有for循环的情况下从两个断点创建长度为n的布尔掩码?

来自分类Dev

如何在没有循环的情况下打印ArrayList的值和索引号?

来自分类Dev

如何在没有try / catch的情况下检查对象是否具有特定键

来自分类Dev

如何在没有内存泄漏的情况下删除对象指针的2D向量?C ++和SFML

来自分类Dev

如何在没有(if / else)运算符的情况下将新值写入单个位

来自分类Dev

如何在tensorflow中不生成警告的情况下检查是否存在GPU

来自分类Dev

如何在没有尝试捕获的情况下检查Metro应用程序中是否存在文件

来自分类Dev

如何在没有vue-devtools的情况下检查页面是否正在使用vue.js

来自分类Dev

如何在 C# 中检查 Azure 数据工厂管道是否在没有运行 ID 的情况下运行

来自分类Dev

如何在没有groupby的情况下进行运行长度编码

来自分类Dev

如何在不使用appId和secret的情况下检查访问令牌是否有效?

来自分类Dev

如何在没有forEach的情况下从equalTo(unique)查询访问单个子级

来自分类Dev

如何在没有密码的情况下以根用户身份执行单个启动器?

来自分类Dev

如何在没有jshint警告的情况下以角度定义自定义包?

来自分类Dev

在没有警告的情况下如何在熊猫中进行作业?

来自分类Dev

如何在没有任何查询的情况下更改SQL上的SSMS警告设置?

来自分类Dev

如何在没有警告的情况下将套接字转换为SSLConnectionRef?

来自分类Dev

如何在Rails中没有控制器和动作的情况下将根路径设置为“ /”?

来自分类Dev

如何在没有任何ID的情况下以javascript DOM中的ul和li为目标元素

来自分类Dev

如何在忽略继承的情况下检查类是否为某种类型?

Related 相关文章

  1. 1

    如何在没有CORB警告的情况下检查URL是否存在?

  2. 2

    如何在没有JQuery的情况下检查元素是否为最后一个子元素

  3. 3

    如何在没有缓冲的情况下使用单个枚举检查IEnumerable的多个条件?

  4. 4

    如何在没有警告的情况下执行resolvconf?

  5. 5

    如何在没有Ord的情况下找到向量的最小值?

  6. 6

    如何在没有收到TCP套接字的情况下检查是否有传入数据?

  7. 7

    如何在没有文档的情况下检查 api?

  8. 8

    如何在没有空格和行的情况下检查td的内容

  9. 9

    C如何在没有编译器警告的情况下将地址打印为十进制值(非十六进制)

  10. 10

    如何在没有for循环的情况下从两个断点创建长度为n的布尔掩码?

  11. 11

    如何在没有循环的情况下打印ArrayList的值和索引号?

  12. 12

    如何在没有try / catch的情况下检查对象是否具有特定键

  13. 13

    如何在没有内存泄漏的情况下删除对象指针的2D向量?C ++和SFML

  14. 14

    如何在没有(if / else)运算符的情况下将新值写入单个位

  15. 15

    如何在tensorflow中不生成警告的情况下检查是否存在GPU

  16. 16

    如何在没有尝试捕获的情况下检查Metro应用程序中是否存在文件

  17. 17

    如何在没有vue-devtools的情况下检查页面是否正在使用vue.js

  18. 18

    如何在 C# 中检查 Azure 数据工厂管道是否在没有运行 ID 的情况下运行

  19. 19

    如何在没有groupby的情况下进行运行长度编码

  20. 20

    如何在不使用appId和secret的情况下检查访问令牌是否有效?

  21. 21

    如何在没有forEach的情况下从equalTo(unique)查询访问单个子级

  22. 22

    如何在没有密码的情况下以根用户身份执行单个启动器?

  23. 23

    如何在没有jshint警告的情况下以角度定义自定义包?

  24. 24

    在没有警告的情况下如何在熊猫中进行作业?

  25. 25

    如何在没有任何查询的情况下更改SQL上的SSMS警告设置?

  26. 26

    如何在没有警告的情况下将套接字转换为SSLConnectionRef?

  27. 27

    如何在Rails中没有控制器和动作的情况下将根路径设置为“ /”?

  28. 28

    如何在没有任何ID的情况下以javascript DOM中的ul和li为目标元素

  29. 29

    如何在忽略继承的情况下检查类是否为某种类型?

热门标签

归档