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中)
所以这时候可以读到的就是这俩变量的值。
相关文章:
R语言——赋值(= ,<- ,<<-)
R语言 R语言——赋值( ,<- ,<<-) 文章目录 R语言一、 与 <- 的区别二、 <<- ,向上一环境层写入变量 R语言中" <- " 与 " " 都可以用来赋值,但R中建议使用" <- “…...
图形界面四则运算计算器(Python+PyQt5)
(1) 导入所需的库和模块。 (2) 创建一个名为Calculator的类,继承自QMainWindow。 (3) 在Calculator类的__init__方法中,调用initUI方法初始化界面。 (4) 在initUI方法中,设置窗口标题和大小,创建显示结果的文本框,并调…...
SQL Server 创建表
切换数据库,判断是否存在 --切换数据库 use DBTEST--判断表是否存在 --创建的所有表都可以在sys.boject中找到,所以这里在sys.objects中查找是否有名字为department的表并且type为U 即用户生成的表 if exists(select * from sys.objects where namedepa…...
JS数组或数组对象去重常用方法
数组去重有许多种方法,下面列举几种常见方法 数组去重数组对象去重 数组去重 使用 Set:将数组转化为 Set 对象,去重后再转化回数组,Set 会自动去重 const arr [1, 2, 3, 2, 1, 4] const newArr [...new Set(arr)] console.log…...
allure测试报告生成逻辑--解决在Jenkins里打开allure报告页面后空白显示无数据问题(以window环境为例)
前言 相信大家在用Jenkins持续集成+ant自动构建+jmeter接口测试+pytest代码.xml文件转化+allure测试报告为一体的接口自动化测试构建过程中,都会遇到Jenkins里打开allure报告页面后空白显示无数据问题这一现象级问题,今天Darren洋就给大家分享一下如何讲讲allure测试报告生成…...
基于JAYA优化的BP神经网络(分类应用) - 附代码
基于JAYA优化的BP神经网络(分类应用) - 附代码 文章目录 基于JAYA优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.JAYA优化BP神经网络3.1 BP神经网络参数设置3.2 JAYA算法应用 4.测试结果:5.M…...
JavaScript进阶(二十六):ES各版本特性详解
文章目录 一、ECMAScript简介二、ES6 (ES2015)三、ES7 (ES2016)四、ES8 (ES2017)五、ES9 (ES2018)六、ES10 (ES2019)七、ES11 (ES2020)八、ES12 (ES2021)九、拓展阅读 一、ECMAScript简介 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,Europ…...
排序算法-快速排序法(QuickSort)
排序算法-快速排序法(QuickSort) 1、说明 快速排序法是由C.A.R.Hoare提出来的。快速排序法又称分割交换排序法,是目前公认的最佳排序法,也是使用分而治之(Divide and Conquer)的方式,会先在数…...
Python 简介
一、Python 简介 Python 是著名的“龟叔” Guido van Rossum 在 1989 年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。牛人就是牛人,为了打发无聊时间竟然写了一个这么牛皮的编程语言。 现在,全世界差不多有 600 多种编程语言&am…...
grafana api创建dashboard 记录
文章目录 json model导入申请api key创建dashboard删除dashboard json model导入 直接在ui通过json model 导入,开发自己用还好,但对非开发人员不太友好,故考虑通过api后台自动创建 api doc : https://grafana.com/docs/grafana/v9.3/devel…...
局域网上IP多播与IP单播关于MAC地址的区别
IP单播进行到局域网上的时候: 网际层使用IP地址进行寻址,各路由器收到IP数据报后,根据其首部中的目的IP地址的网络号部分,基于路由表进行查表转发。 查表转发的结果可指明IP数据报的下一跳路由器的IP地址,但无法指明…...
三数之和[中等]
优质博文:IT-BLOG-CN 一、题目 给你一个整数数组nums,判断是否存在三元组[nums[i], nums[j], nums[k]]满足i ! j、i ! k且j ! k,同时还满足nums[i] nums[j] nums[k] 0。请你返回所有和为0且不重复的三元组。 注意:答案中不可以…...
基于天牛须优化的BP神经网络(分类应用) - 附代码
基于天牛须优化的BP神经网络(分类应用) - 附代码 文章目录 基于天牛须优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.天牛须优化BP神经网络3.1 BP神经网络参数设置3.2 天牛须算法应用 4.测试结果&#x…...
渗透波菜网站
免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,…...
Spring Boot:Dao层-实例介绍
目录 Dao层的作用Dao层的特点与 Service 层和 Controller 层的关系实例介绍MenuDaoOperatorLogDaoRoleDaoUserDao四个文件的共同点引用的包使用Repository注解继承JpaRepository接口接口的实体类的主键类型使用 Query()注解 Dao层的作用 负责与数据库进行交互,主要…...
接口测试入门:深入理解接口测试!
很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。 一、前端和后端 在谈论接口测试之前,让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写…...
Redis微服务架构
Redis微服务架构 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去…...
【C++】 局部对象,引用返回
1、new 关键字 会在堆内申请空间,如果仅仅是普通调用构造函数,不会在堆内开辟空间。 2、函数调用会形成栈帧,进行压栈操作,函数调用结束,会进行弹栈。 函数内的局部对象,会随着弹栈,而被销毁(…...
线性代数中涉及到的matlab命令-第二章:矩阵及其运算
目录 1,矩阵定义 2,矩阵的运算 3,方阵的行列式和伴随矩阵 4,矩阵的逆 5,克莱默法则 6,矩阵分块 1,矩阵定义 矩阵与行列式的区别: (1)形式上行列式…...
计算机毕业设计选什么题目好?springboot 美食推荐系统
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
解决语音合成难题:用QWEN-AUDIO实现高质量、带情绪的TTS
解决语音合成难题:用QWEN-AUDIO实现高质量、带情绪的TTS 1. 语音合成的痛点与突破 传统语音合成技术(TTS)长期面临三大难题:机械感强、缺乏情感表现力、定制成本高。许多开发者尝试过开源解决方案,但往往需要复杂的参数调整才能获得勉强可用…...
ROS机器人开发实战:利用tf2库高效处理四元数、欧拉角与旋转矩阵的转换
1. 为什么机器人开发需要处理多种姿态表示 在机器人开发中,我们经常需要处理各种姿态数据。无论是移动机器人的定位信息、机械臂末端执行器的位姿,还是传感器数据的融合,都离不开对物体在三维空间中位置和朝向的描述。但有趣的是,…...
嵌入式WebSocket客户端:零malloc、状态机驱动的轻量级实现
1. WebSocketClient 库深度解析:面向嵌入式系统的轻量级 WebSocket 客户端实现WebSocket 协议(RFC 6455)作为全双工通信的工业级标准,在嵌入式边缘设备与云平台、Web 控制台、MQTT 网关桥接等场景中已成刚需。然而,主流…...
基于python框架的大学生创新创业项目管理系统vue
目录功能模块分析项目管理模块评审管理模块资源协同模块技术实现要点数据安全方案扩展性设计项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作功能模块分析 用户管理模块 角色划分:学生、导师、管理员(支…...
Qwen-Image-Edit快速入门:上传模糊图片,一键生成高清人像
Qwen-Image-Edit快速入门:上传模糊图片,一键生成高清人像 1. 认识Qwen-Image-Edit图像修复模型 1.1 模型核心能力 Qwen-Image-Edit-2511-Unblur-Upscale是一款专为图像修复设计的AI模型,它能将模糊、低分辨率的人像照片快速转化为高清效果…...
MQTT安全连接不止一种:用MQTTnet库玩转C#客户端单向与双向认证
MQTT安全连接实战:从单向认证到双向认证的C#实现精要 物联网设备间的数据传输安全一直是开发者关注的核心问题。MQTT协议作为轻量级的消息传输协议,在工业自动化、智能家居等领域广泛应用,但其默认的1883端口通信并不加密。本文将深入探讨如何…...
MAD与标准差:鲁棒统计中的抗噪利器
1. 为什么我们需要抗噪统计量? 在日常数据分析中,我们经常会遇到一些"不听话"的数据点。比如分析员工薪资时突然冒出几个高管的天价年薪,或者测量温度时混入几个明显错误的极端值。这时候如果直接用传统的标准差来计算离散程度&…...
OpenClaw浏览器自动化:Qwen3.5-9B驱动复杂网页操作实录
OpenClaw浏览器自动化:Qwen3.5-9B驱动复杂网页操作实录 1. 为什么选择OpenClaw做浏览器自动化? 去年冬天,我为了给家里老人买一台性价比高的空气净化器,连续三天晚上手动比价到凌晨两点。在不同电商平台反复切换标签页、记录价格…...
通过爱毕业AI的智能改写功能,五个方法助你快速降低论文重复率
嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...
C语言嵌入式开发核心技术难点解析
C语言嵌入式开发中的三大核心技术难点解析 1. 指针:内存操作的艺术 指针是C语言中最具挑战性的概念,也是嵌入式系统开发中不可或缺的核心技术。指针本质上是一个存储内存地址的特殊变量,其设计哲学直接映射了计算机底层的内存管理机制。 1…...
