来回双箭头符号 双向箭头符号图片( 三 )


  • 此外 , 还需要注意的一点就是 , 在传参中采用箭头(<-)进行赋值的变量只有在需要使用时才会改变其值 。例如:
  • > a <- 1 > f <- function(x) return(TRUE) > f(a <- a + 1); a [1] TRUE [1] 1
  • 请注意 , 以上范例里 ,  a 的值并没有改变 , 也就是a并没有加1 , 还是原来的a值 , 这是在函数内部并未用到参数a 。这会导致程序里出现一些不可预期的结果并且降低代码可读性 , 所以不推荐在函数参数里使用箭头(<-)这种赋值方式 。在看下面的例子:
  • > a <- 1 > f <- function(x) { + if(runif(1)>0.5) TRUE + else print(x) + } > f(a <- a+1);a [1] TRUE [1] 1 > f(a <- a+1);a [1] TRUE [1] 1 > f(a <- a+1);a [1] TRUE [1] 1 > f(a <- a+1);a [1] 2 [1] 2 > f(a <- a+1);a [1] TRUE [1] 2 > f(a <- a+1);a [1] 3 [1] 3
  • 上述代码中 , 向函数 f() 传递传递参数 a <- a + 1 后 , 只有在随机数 runif(1) 小于0.5的时候 , a 的值才会改变 , 即执行+1操作 , 然后打印a 。否则传递TRUE值 。因此 , 因为随机数 runif(1) 的随机性 , 每次调用函数 f()后 a 的值是不确定的 。
  • 现在大家应该清楚了解箭头(<-)和等号(=)的区别了吧!个人建议 , 大家写赋值语句时采用箭头(<-) , 传参时使用等号(=) 。这也是大部分老师都会强烈推荐的用法 。是因为使用箭头(<-)赋值 , 意义清晰 , 可以保持代码良好的可读性 , 尤其是书写复杂函数时 , 避免造成混乱 。Google 的 R style guide(
    https://google.github.io/styleguide/Rguide.xml)也推荐使用箭头(<-)赋值 。况且有些情况下 , 只能采用箭头(<-)赋值 , 例如:system.time(c<-1:10)中就不能使用等号(=) 。而从数学的角度来说 , 等号两边是相等的 , 即等号左边的等于等号右边的 , 等号右边的也等于等号左边的 。等号本身并没有指向性 , 因此并没有办法体现”赋值“这一含义 。而在R中 , 箭头(<-)符号生动的阐释了赋值的含义 , 一个非等号(=)的赋值符从根本上向学习者暗示这样一个真理: 赋值操作与数学上的等于是完全不同的 。此外 , 箭头(<-)符号可以双向赋值 , 即x <- 10与10 -> x等价 。习惯 <- 和 -> 的使用以后 , 也对后来习惯使用更为复杂的 <<- 以及 ->> 这两个赋值符号(<<-或->>一般用于函数内部 , 表示给上一层环境中的变量赋值)做好铺垫 , 而 =无法实现类似的功能 。
    另外也有等号党提出异议 , 认为采用箭头(<-)不如使用等号(=) 。例如:如果我想判断一个变量是否小于10 , 可以写成 x<10;如果我想判断一个变量是否小于-10 , 然后顺手写成x<-10 , 这时候就会产生歧义 。关于处理负数时产生歧义的说法 , 只能说是没有正确养成良好的空格习惯造成的 , 句号逗号后加空格 , 括号外围加空格 , 运算符号两边加空格 , 这些应该是学习代码前就应该懂得的常识 。会犯出 a <- 5 和 a < -5 混淆的错误只能说明自己的代码风格糟糕 , 建议大家Google 的 R style guide(
    https://google.github.io/styleguide/Rguide.xml )中其他的一些代码写作规则 。
    【来回双箭头符号 双向箭头符号图片】Reference
    1. https://www.cnblogs.com/loca/p/4301344.html
    2. https://google.github.io/styleguide/Rguide.xml


      特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。