R语言——赋值(= ,<- ,<<-)

R语言

R语言------赋值(= ,<- ,<<-)


文章目录

  • R语言
  • [一、 = 与 <- 的区别](#一、 = 与 <- 的区别)
  • [二、 <<- ,向上一环境层写入变量](#二、 <<- ,向上一环境层写入变量)

R语言中" <- " 与 " = " 都可以用来赋值,但R中建议使用" <- ",大部分情况下这两者可以通用。在R中你可以使用 " Alt " + " - " 的组合来快速打出" <- "。

一、 = 与 <- 的区别

相较于 <- ,= 更受喜欢。一方面是 = 符合现在大部分语言的赋值习惯,二是相较于 <- 需要按两个键,=一个键就可以轻松搞定。

R语言中,<- 与 = 这两个赋值运算符最主要的区别在于两者的作用域不同。

下面举个例子:

  • 使用 <- 赋值时是在全局变量中定义的,只要不主动删除 x 变量,它就一直存在。
  • 使用 = 赋值时变量 x 是在函数的作用域里进行声明的,所以它只存在于此函数中,一旦运算完成便"消失"了。

最直观的就是使用 <- 赋值时 Global Environment 里出现了 x 变量。

上面讲的这些,并不是否认了 = 或者 <- (->也是被允许的,<- 的方向也是意味着赋值的方向)功能重复了,一般在R中用 <- 进行赋值,= 作为为子集赋"name"的存在。

例如一个规范的的赋值是这样使用的:

这里再提一个不怎么会遇见的点:在 R 中,在参数中进行赋值的变量只有在需要进行评估时才会改变其值。意思也就是如果变量在函数传递时局部改变了量,其值是不会改变的。

例如:

此时变量 a 的值虽然在函数中被 +1 了,但其最终在环境变量中并没有被改变。

二、 <<- ,向上一环境层写入变量

在R中任意层都可以读取上层环境变量,但是 <- 是无法往上层写入变量的,需要用到 <<- 来向上一环境层写入变量。

例如:

首先要明确的一点是,在读取值时读的是全局变量的值,也就是 Global Environment中的变量值。

示例中首先是编写了一个函数pluxs,里面定义了三个局部变量。此时这时候函数还没被调用所以三个变量皆为空。

接着定义了一个全局变量 x=1 ,并且调用了pluxs函数,使得里面的局部变量值有了变化,但只有a使用了 <<- 赋值,所以只有a的值被写入上层环境中,这时的上层环境已经是顶层环境了(逐层上找,直到顶层环境),但是仍然没有找到被定义的变量 a ,那么R就会自己在 Global Environment中定义一个变量 a 并将2的值写进去。

也就是说此时 Global Environment中的变量为 a=2 ,x=1(局部变量x有改变,但是并没有被写入 Global Environment中)

所以这时候可以读到的就是这俩变量的值。

相关推荐
酷在前行42 分钟前
【R论文复刻】Nature Communications 冲积图进阶:状态转移、流带排序与多面板排版(保姆级教程)
开发语言·r语言
酷在前行1 天前
【R模型】R语言随机森林分类进阶:交叉验证、调参与独立测试(保姆级教程)
随机森林·分类·r语言
天桥下的卖艺者1 天前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
AAIshangyanxiu3 天前
R 语言耦合遥感技术的水环境综合评估完整技术体系,水质水深水温定量反演方法
开发语言·r语言·遥感水文·水文遥感·r语言遥感
临床数据科学和人工智能兴趣组4 天前
R语言版本检查与扩展包自动更新
机器学习·数据分析·r语言·r语言-4.2.1
临床数据科学和人工智能兴趣组10 天前
RStudio的Console(控制台)是一个非常重要的组件
人工智能·机器学习·数据分析·r语言·r语言-4.2.1
智购科技无人售货机工厂11 天前
自动售货机硬件选型避坑:单片机 / 树莓派 / ESP32 怎么选?~YH
人工智能·单片机·嵌入式硬件·r语言·swift·perl·symfony
青春不败 177-3266-052013 天前
基于“R语言+遥感“水环境综合评价方法实践技术应用
r语言·水环境·水文模型·水遥感·水温模拟
临床数据科学和人工智能兴趣组15 天前
R语言因其强大的统计功能、灵活的编程环境、活跃的社区支持和强大的R扩展包,迅速成为统计学和数据科学领域的首选工具之一
开发语言·数据分析·r语言·r语言-4.2.1
IDIOSF19 天前
R语言 下载安装教程(附安装包)R语言4.5安装步骤(保姆级)
开发语言·其他·r语言