美文网首页
R语言“<-”和“=”的区别

R语言“<-”和“=”的区别

作者: tianzhanlan | 来源:发表于2020-01-18 22:57 被阅读0次

R语言中“<-”用于赋值,“=”用于传参。

1.构建矩阵:

#ncol用“=”时,指定矩阵为3列
>matrix(c(1:12),ncol=3) 
      [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
#ncol用“<-”时,指定ncol为3,但实际是nrow=ncol<-3,因为该位置默认是参数nrow
>matrix(c(1:12),ncol<-3)
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

我们可以看到,尽管两种方法,都运行成功,且得到了一个矩阵,但是第二个结果是一个错误的结果,此处出错的原因就是,ncol<-3是将3赋值给变量ncol,然后再传递给函数对应位置的参数,而在函数内第二个参数实际上是对应的nrow参数。在实际编写代码时,遇到这种情况,如果我们不注意,就会导致后续所有结果都出错。

2.此外,还需要注意的一点就是,在传参中采用箭头(<-)进行赋值的变量只有在需要使用时才会改变其值。例如:

> a <- 1 
> f <- function(x) return(TRUE)
> f(a <- a + 1)
[1] TRUE
> a
[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)
[1] TRUE 
> a
[1] 1 
> f(a <- a+1)
[1] TRUE
> f(a <- a+1)
[1] 2
> a  
[1] 2

上述代码中,向函数 f() 传递传递参数 a <- a + 1 后,只有在随机数 runif(1) 小于0.5的时候,a 的值才会改变,即执行+1操作,然后打印a。否则传递TRUE值。因此,因为随机数 runif(1) 的随机性,每次调用函数 f()后 a 的值是不确定的。

相关文章

  • R语言“<-”和“=”的区别

    R语言中“<-”用于赋值,“=”用于传参。 1.构建矩阵: 我们可以看到,尽管两种方法,都运行成功,且得到了一个矩...

  • R语言中,cbind和rbind区别

    cbind: 根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbi...

  • R语言中的switch函数用法

    R语言中的switch与其它语言中的switch有很大区别。 在R中,switch函数的语法形式如下: 其中,ex...

  • 2019-07-25

    verilog语言使用 rtl级建模和组合逻辑级区别:rtl级包含rst和clk信号 变量类型 wire 连线 r...

  • 学习小组Day4笔记-Herobrine

    R语言入门 R和Rstudio RStudio是R的一个集成开发环境。下载安装好R和Rstudio,需要使用R语言...

  • 学习小组Day4-沈荣

    R语言基础 1.R与Rstudio的安装 2.了解R与Rstudio ①R语言: R是一种编程语言,也是统计计算和...

  • 学习小组Day4笔记--Sakura

    R语言基础 安装R(基础)和Rstudio 必须保证电脑用户名为英文 R语言与Rstudio R语言的核心是解释计...

  • 学习小组Day4笔记——山川石

    R语言基础 R和RStudio R和RStudio介绍 R是一种编程语言,也是统计计算和绘图的环境,它汇集了许多函...

  • 2020-11-02DAY4-添添-R语言基础

    1、下载R和Rstudio 2、认识R和Rstudio R是一种编码语言,Rstudio是使用R语言的图形界面,接...

  • 2020-10-26 学习小组Day4 笔记 --赵小草

    R语言入门 了解R语言 R是一种编程语言,也是统计计算和绘图的环境,它汇集了许多函数,能够提供强大的功能。R语言软...

网友评论

      本文标题:R语言“<-”和“=”的区别

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