如何在R中传递NULL作为参数

  • 本文关键字:NULL 参数 r null
  • 更新时间 :
  • 英文 :


我有一个向量arguments,其中一些值是NA。我想依次将这些参数传递给这样的函数:

myFunction(argument = ifelse(!is.na(arguments[i]),
arguments[i], NULL))

使得无论何时它不是NA,它都将取arguments[i]中的值,否则取默认的NULL。但这会产生一个错误。

如果有任何不同,则所讨论的函数是optmatch包中的match_on()。有问题的论点是caliper,因为我只想在有卡尺可用时(即,当卡尺向量中的值不是NA时(提供卡尺。错误信息是:

Error in ans[!test & ok] <- rep(no,  length.out = length(ans))[!test &  : 
replacement has length zero
In addition: Warning message:
In rep(no, length.out = length(ans)) :'x' is NULL so the result will be NULL 

您可以使用?switch()而不是ifelse-

myFunction(argument = switch(is.na(arguments[i]) + 1, arguments[i], NULL))

这是switch-的帮助文档

开关(EXPR,…(

参数

EXPR计算为数字或字符串的表达式。

备选方案列表。如果EXPR有字符串值这些将被命名,可能除了一个备用项用作"默认"值。

详细信息

开关有两种不同的工作方式,取决于第一个参数是否计算为字符串或数字。

如果EXPR的值不是字符串,它将被强制为整数如果整数介于1和nargs((-1之间,则…的相应元素。。。评估并返回结果:因此,如果第一个自变量为3,则评估第四个自变量并返回

基本上,当参数为NA时,EXPR的求值结果为2,返回NULL;当参数不是NA时,则EXPR的求值结果是1,返回arguments[i]

相关内容

  • 没有找到相关文章