r - 确定函数调用中是否已给出值的方法
问题描述
我正在编写一个函数,函数的一部分可以接受单个值或向量,或者如果函数调用中未指定任何内容,则保留默认值。
在下面的代码中,“a”被赋予默认值 0,然后在函数中有一个 if 语句来查看“a”是否仍然为 0 或者是否已为其分配了一个值。
如果我使用单个值、向量调用该函数,或者将其留空,它会打印预期的结果。如果给它的向量的长度大于 1,我会收到预期的警告消息(尽管函数仍在工作):'条件的长度 > 1,并且只使用第一个元素'
因此,我的查询是测试“a”是否留空以及运行一段代码(在这种情况下打印“默认”)或“a”是否留空的最佳方法是什么被赋予一个值然后运行一些其他代码(在这种情况下打印“给定值”),如果在我调用函数时将向量分配给“a”,则不会出现警告消息。
示例代码如下:
#Function
ExampleFunction<-function(a=0)
{
if (a==0)
print ("default")
else{print("value given")}
}
#Run function using a vector which gives the warning message
abc<-c(1,2,3)
ExampleFunction(abc)
解决方案
看到警告是因为在评估语句时,R 需要一个布尔值,而不是布尔值向量,因此当您尝试仅发送 vector 的第一个值时if
会看到警告,即 1 被分配给功能。我建议您阅读 R 中的“命名参数”。abc <- c(1,2,3)
abc
a
同时,您可以检查参数的长度a
及其值,以查看在调用函数时是否已将其分配给非零值。希望能帮助到你!
关于命名参数的链接:函数默认参数和命名值
https://www.r-bloggers.com/r-tip-force-named-arguments/
https://www.safaribooksonline.com/library/view/r-in -a/9781449358204/ch09s05.html
推荐阅读
- laravel - 如何在 laravel MongoDB 中使用 groupBy Month 和 Sum
- node.js - 错误 [ERR_REQUIRE_ESM]: 运行脚本时必须使用 import 加载 ES 模块
- node.js - 如何使用变量(和 node.js)在 MongoDB 中进行精确短语文本搜索
- reactjs - 如何根据反应选择中的选定值有条件地呈现数据
- sql - 计算分组内的总时间
- javascript - 调试关闭时移动设备上的空白页面
- powerbi - 按另一列过滤表
- rust - 如何在 Rust 中生成枚举选项的 vec
- python - 合并 2 个数据框而不改变形状
- c - 将目标字符串作为指针传递给 strcpy