美文网首页数据-R语言-图表-决策-Linux-Python
R在编写函数的时候遇到的问题

R在编写函数的时候遇到的问题

作者: 鸣人吃土豆 | 来源:发表于2018-08-12 00:28 被阅读15次

在编写条件判断时
1.可以使用 || (或)和 && (与)操作符来组合多个逻辑表达式。这些操作符具有“短路效应”:只要 || 遇到第一个 TRUE ,那么就会返回 TRUE ,不再计算其他表达式;只要 && 遇到第一个 FALSE ,就会返回 FALSE ,不再计算其他表达式。** 不能在 if 语句中使用 | 或 **,它们是向量化的操作符,只可以用于多个值
如果一定要使用逻辑向量,那么你可以使用 any() 或 all() 函数将其转换为单个逻辑值。

2.在测试相等关系时,一定要小心, == 是向量化的,很容易输出多个值。要么先检查结果的长度是否为 1,然后使用 all() 或 any() 函数进行转换;要么使用非向量化的identical() 函数。 identical() 非常严格,总是返回一个 TRUE 或者一个 FALSE ,并且不限制参数类型。这意味着,在比较整数和双精度数时,一定要注意:

identical(0L, 0)
> [1] FALSE

解决方式是使用 dplyr::near() 函数进行比较
x == NA 没有任何作用。

 stopifnot() 函数,
它会检查每个参数是否为真,如果某个参数不为真,则生成一条通用的错误消息:
wt_mean <- function(x, w, na.rm = FALSE) {
stopifnot(is.logical(na.rm), length(na.rm) == 1)
stopifnot(length(x) == length(w))
if (na.rm) {
miss <- is.na(x) | is.na(w)
x <- x[!miss]
w <- w[!miss]
函数 | 197
}
sum(w * x) / sum(x)
}
wt_mean(1:6, 6:1, na.rm = "foo")
#> Error: is.logical(na.rm) is not TRUE

Note:注意,如果使用了 stopifnot() 函数,那么你实际上是断言了哪些参数必须为真,而不是
检查哪些参数可能是错的。

相关文章

  • R在编写函数的时候遇到的问题

    在编写条件判断时1.可以使用 || (或)和 && (与)操作符来组合多个逻辑表达式。这些操作符具有“短路效应”:...

  • python3 递归

    最近写代码遇到一个问题:在 python 中,编写一个函数,在该函数内 有 for 循环,在for循环下 继续调用...

  • R包开发的标准姿势

    内容目录 建立R包项目 打开项目文件夹 编写DESCRIPTION文件 编写R函数 编写文档 建立数据 数据文件描...

  • 关于JS函数的参数小结

    参数分实参和虚参,定义函数时的参数叫虚参,调用函数时候传入参数的叫实参本文主要小结一下平时编写代码时候遇到参数问题...

  • R语言函数编写

    语言函数编写是一个非常重要的技能,它能在没有任何包能实现自己的想要的功能的情况下,实现问题的解决。在R中,不同行的...

  • R | 基础函数编写

    自定义函数 R语言中有两个重要的组成,一是变量,用于存储数据;二是函数,用于操作数据。函数的组成离不开三个部分:函...

  • Django URL和View设置

    在view里编写需要的定义的请求处理的函数: def index(request):return render(r...

  • Golang中的方法集问题

    问题提要 之前写代码的时候遇到了一个问题:自己编写了一个接口,然后又写了一个结构体实现这个接口,在通过函数调用接口...

  • JavaScript中in运算符使用的问题

    在编写一个数组去重的代码的时候遇到一个问题 这里使用map方法遍历数组,在方法内赋值,不涉及回调函数的返回值问题,...

  • 编写项目遇到的问题

    1.JSTL,EL用法的注意点Java.lang.NumberFormatException: For input...

网友评论

    本文标题:R在编写函数的时候遇到的问题

    本文链接:https://www.haomeiwen.com/subject/mypjbftx.html