当前位置: 首页 > news >正文

R语言编程基础

文章目录

    • 安装
    • 运算符
    • 判断
    • 函数
    • 递归

安装

根据自己的操作系统,下载R语言环境后,安装,并将安装路径加入到环境变量,即可从命令行进入R环境

>rR version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.> q()
Save workspace image? [y/n/c]: n
>

进入之后,通过q()可以推出R语言环境,在退出之前,会提示是否保存工作镜像,y是保存,n是不保存,c是不退出。

如果并不习惯在命令行中操作,可以下载RStudio。

RStudio是转为R语言打造的集成开发环境,下载地址:RStudio,选择免费的就行,安装过程中,会自动嗅探已经安装的R语言环境,注意选择。

安装完成后,打开界面如下,整体布局为四个格子,左下角的Console选项卡为命令行,可以直接输入R语言命令;左上角为文件编辑区,既可以编辑R语言脚本,也可以展示当前工作区中的变量详情。其他的选项卡将在后面陆续介绍。

在这里插入图片描述

运算符

R语言中,用#做单行注释,双引号为多行注释。

尽管支持用=赋值,但在R语言中,更推荐左赋值<-和右赋值->作为赋值符,示例如下

a <- 5
6 -> b
a + b -> c
print(c)
# [1] 11

当输入这些命令后,RStudio右上角的Environment选项卡中,出现了a,b,c三个变量,其值分别位5, 6, 11。如果点进History选项卡,会看到刚刚在命令行中输入的所有命令。

在这里插入图片描述

在R语言中,常见的运算符和数学函数如下

类别
算术加减乘除+, -, *, /;整除%/%;求余%%;乘方^
比较>, <, ==, !=, >=, <=
逻辑与或非 &, |, !
取整函数四舍五入round;向上取整ceiling;向下取整floor
三角函数三角sin, cos, tan;反三角asin, acos, atan
指数对数平方根sqrt;e指数exp;对数log;10底对数log10

下面实际体验一下

> round(c/b)
[1] 2
# round的第二个参数,表示保留的小数位数
> round(c/b,3)
[1] 1.833
> c %/% a
[1] 2
> c ^ a
[1] 161051
> c < a
[1] FALSE
> c > a
[1] TRUE
> FALSE | TRUE
[1] TRUE

其中,FALSETRUE为布尔型返回值,分别表示假和真。

判断

布尔型的一个重要作用,就是作为判断语句的条件。在R语言中,提供了宇宙通用的if...else if...else语句,示例如下

> if(a>b){
+     print(a)
+ }else if(a==b){
+     print("a==b")
+ }else{
+     print(b)
+ }
[1] 6

在R语言中,语句块用{}括起来,当命令行检测到尚未封闭的{后,会自动将>替换为+,表示语句尚未写完。上面的if...else所实现的功能非常简单,如果a>b,就打印a;如果a和b相等,就打印字符串a==b;否则打印b

由于a为5,b为6,所以打印了6。

函数

如果每次比较都输入一遍if...else,将会十分繁琐,使用函数,可以将常用的代码封装起来,以便于复用。

在R语言中,通过关键字function来创建函数,示例如下

> funTest<-function(a,b){
+     if(a>b) {print("a>b")}
+     else if(a==b){print("a==b")}
+     else{print("a<b")}
+ }
> funTest(3,4)
[1] "a<b"
> funTest(5,4)
[1] "a>b"
> funTest(4,4)
[1] "a==b"

这个函数实现了比较a,b大小,并输出比较结果的功能。但这个函数和数学上的函数并不相似,主要原因是没有返回值。所谓返回值,可以理解为y=f(x)中的y,在r语言中,通过return来实现这个功能,示例如下,

> funTest2<-function(){return(2)}
> funTest2()
[1] 2

递归

所谓递归,就是调用自身,例如下面的阶乘函数

> fac<-function(n){
+     if(n>1){return(n*fac(n-1))}
+     else{return(1)}
+ }
> fac(5)
[1] 120

n>1时,返回n*fac(n-1)fac(5)的调用链条为

fac(5)->5*fac(4)->5*4*fac(3)->5*4*3*fac(2)->5*4*3*2*fac(1)->120

相关文章:

R语言编程基础

文章目录安装运算符判断函数递归安装 根据自己的操作系统&#xff0c;下载R语言环境后&#xff0c;安装&#xff0c;并将安装路径加入到环境变量&#xff0c;即可从命令行进入R环境 >rR version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting" Copyright …...

2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。

2023-03-15&#xff1a;屏幕录制并且显示视频&#xff0c;不要用命令。代码用go语言编写。 答案2023-03-15&#xff1a; 使用moonfdd/ffmpeg-go和moonfdd/sdl2-go库来实现屏幕录制并显示视频&#xff0c;大体流程如下&#xff1a; 1.使用libavdevice库中的AVInputFormat&…...

STM32外设-DMA

1. 简介 DMA(Direct Memory Access)—直接存储器存取&#xff0c;是单片机的一个外设&#xff0c;它的主要功能是用来搬数据&#xff0c;但是不需要占用 CPU&#xff0c;即在传输数据的时候&#xff0c; CPU 可以干其他的事情&#xff0c;好像是多线程一样。数据传输支持从外设…...

【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?

最近一位朋友参加阿b的面试&#xff0c;然后面试官问了她这个问题&#xff0c;我问她咋写的&#xff0c;她一脸淡定的说&#xff1a;“虚拟列表。”大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面…...

第十二届蓝桥杯省赛详解

试题A&#xff1a;空间 1B是8位&#xff0c;32位二进制数占用4B空间&#xff0c;1MB2^10KB2^20B 那么可以存放32位二进制数的个数为256*2^20*8/3267108864 试题B&#xff1a;卡片 分析&#xff1a;因为数据只有2021&#xff0c;所以直接模拟即可 结果为&#xff1a;3181&…...

ssh创建秘钥对

1. 使用ssh-keygen 生成秘钥对 [root6zix89b87qmvuv ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 按回车键或设置密钥的存储路径 Enter passphrase (empty for no passphrase): 按回车键或设置密钥的存…...

JS中sort()方法返回值?

参考 https://segmentfault.com/q/1010000043489928 精辟解释 就是说 sort() 会修改原数组项的排序&#xff0c;sort() 结束后会返回一个数组结果&#xff0c;这个结果其实就是原数组。并不是说会返回一个新的数组。 原理讲解 JS 分为栈内存和堆内存&#xff0c;栈内存可以…...

07从零开始学Java之如何正确的编写Java代码?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言在上一篇文章中&#xff0c;壹哥带领大家开始编写了第一个Java案例&#xff0c;在我们的cmd命令窗口中输出了”Hello World“这…...

Python学习笔记14:网络编程

网络编程 几个网络模块 模块socket # 简单的服务器 import socket s socket.socket() host socket.gethostname() port 1234 s.bind((host, port))s.listen(5) while True: c, addr s.accept() print(Got connection from, addr) c.send(Thank you for connecting)c.…...

初入了解——什么是VUE

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

代码规范(C++)

1.命名规范 1.目录/文件 字母、数字、下划线构成&#xff0c;不同单词用下划线隔开。 2.函数/接口 小驼峰命名法。 3.命名空间 字母、数字、下划线构成&#xff0c;不同单词用下划线隔开&#xff0c;但是尽量只使用一个单词。 4.结构体/类 大驼峰命名法&#xff0c;不包…...

React教程详解四(hooks、pureComponent、Context通信、错误边界、children props与render props)

前言 hooks是react16.8.0版本新增加的新特性/新语法&#xff0c;最大的特点是可以在开发者在函数组件中使用state以及其它React特性&#xff0c;下面分别对其介绍&#xff5e; React.useState() state hook能让函数组件也可以拥有state状态&#xff0c;方便其进行state状态的…...

【Spring从成神到升仙系列 二】2023年再不会 IOC 源码,就要被淘汰了

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…...

菜鸟的进阶--手写一个小型dubbo框架

1.rpc调用流程2.组件1.Redis注册中心3.编解码/序列化在本例的Netty通信中&#xff0c;由于每次调用rpc服务都要发送同一个类对象invoker&#xff0c;所以可以使用Protobuf。但是在接受方法调用结果的时候就不行了&#xff0c;因为我们无法提前确定对方方法返回结果的类型&#…...

js逆向爬取某音乐网站某歌手的歌曲

js逆向爬取某音乐网站某歌手的歌曲一、分析网站1、案例介绍2、寻找列表页Ajax入口&#xff08;1&#xff09;页面展示图。&#xff08;2&#xff09;寻找部分歌曲信息Ajax的token。&#xff08;3&#xff09;寻找歌曲链接&#xff08;4&#xff09;获取歌曲名称和id信息3、寻找…...

为什么软件测试面试了几个月都没有offer,从HR角度分析

首先&#xff0c;我觉得你在软件测试面试的过程中&#xff0c;逻辑比较混乱的最大一个原因是&#xff0c;说明你没有形成一个一个整体的体系。 导致你说的时候很多东西都杂乱无章。 我个人认为软件测试&#xff0c;其实开始首先进行的是一些需求的分析工作&#xff0c;之后呢…...

DC-7 靶场学习

文章目录信息搜集账号密码获取修改密码反弹shell得到flag信息搜集 首先获取目标ip。 arp-scan -l nmap -sP 192.168.28.0/24得到目标ip为&#xff1a; 192.168.28.139先访问页面。 翻译一下。 欢迎来到 DC-7DC-7引入了一些“新”概念&#xff0c;但我会让你弄清楚它们是什么…...

深入理解JavaScript的事件冒泡与事件捕获

前言JavaScript中提供了很多操作DOM的API。事件冒泡和事件捕获是指浏览器中处理DOM元素上事件的两种不同方式。事件冒泡和事件捕获都是JavaScript事件模型中的一部分&#xff0c;可以用来处理事件。对于这个问题&#xff0c;在实际开发中&#xff0c;并不是非常重要&#xff0c…...

格密码学习笔记(六):格中模运算

文章目录格中取模运算CVP和格的陪集致谢格中取模运算 定义&#xff08;格的基本区域&#xff09; P⊂Rn:{Px∣x∈L}\mathcal{P} \subset \mathbb{R}^n : \{ \mathcal{P} \bm{x} | \bm{x} \in \mathcal{L} \}P⊂Rn:{Px∣x∈L}是Rn\mathbb{R}^nRn的一种划分。 用P\mathcal{P}P对…...

【C++】非常重要的——多态

凡是面向对象的语言&#xff0c;都有三大特性&#xff0c;继承&#xff0c;封装和多态&#xff0c;但并不是只有这三个特性&#xff0c;是因为者三个特性是最重要的特性&#xff0c;那今天我们一起来看多态&#xff01; 目录 1.多态的概念 1.1虚函数 1.2虚函数的重写 1.3虚…...

发票账单很多?python助你批量完成数据提取

每天面对成堆的发票&#xff0c;无论是税务发票还是承兑单据&#xff0c;抑或是其他各类公司数据要从照片、PDF等不同格式的内容中提取&#xff0c;我们都有必要进行快速办公的能力提升。因此&#xff0c;我们的目标要求就十分明显了&#xff0c;首先要从图片中获取数据&#x…...

[闪存2.1] NAND FLASH特性串烧 | 不了解闪存特性,你能用好闪存产品吗?

前言 为了利用好闪存, 发挥闪存的优势, 以达到更好的性能和使用寿命, 那自然要求了解闪存特性。 闪存作为一种相对较新的存储介质, 有很多特别的特性。 一.闪存的特性 凡是采用Flash Memory的存储设备,可以统称为闪存存储。我们经常谈的固态硬盘(SSD),可以由volatile/…...

面试官问我按钮级别权限怎么控制,我说v-if,面试官说再见

最近的面试中有一个面试官问我按钮级别的权限怎么控制&#xff0c;我说直接v-if啊&#xff0c;他说不够好&#xff0c;我说我们项目中按钮级别的权限控制情况不多&#xff0c;所以v-if就够了&#xff0c;他说不够通用&#xff0c;最后他对我的评价是做过很多东西&#xff0c;但…...

阿里云服务器使用教程:CentOS 7安装nginx详细步骤

目录 1、下载nginx压缩包 2、配置nginx安装所需环境 3、解压nginx压缩包 4、编译安装nginx 5、nginx启动...

Android JNI浅析、Java和Native通信对象的传值和回调

简单了解一下jni JNI是一个本地编程接口&#xff0c;它允许运行在Java虚拟机的Java代码与用其他语言&#xff08;如C,C和汇编&#xff09;编写的库交互。 jni函数签名 首先看一下java类型对应的jni类型&#xff1a; Java类型符号BooleanZByteBCharCShortSIntILongJFloatFDo…...

linux目录/usr/lib/systemd/system目录详解

文章目录前言一. systemd介绍二. service 脚本详解2.1 [Unit] 区块2.2 [Service] 区块2.3 [Install] 区块总结前言 init的进化经历了这么几个阶段&#xff1a; CentOS 5: SysV init,串行 CentOS 6&#xff1a;Upstart,并行&#xff0c;借鉴ubuntu CentOS 7&#xff1a;Syste…...

408考研计算机之计算机组成与设计——知识点及其做题经验篇目4:CPU的功能和基本结构

随着考研的慢慢复习&#xff0c;我们逐渐进入了计算机组成与设计的第五章中央处理器。它原名为CPU。姓C&#xff0c;名PU&#xff0c;字中央处理器&#xff0c;号计组难点&#xff0c;乃计算机之中心与核心部件&#xff0c;小编称之曰能算能控&#xff0c;赐名曰九天宏教普济生…...

2022-12-10青少年软件编程(C语言)等级考试试卷(五级)解析

2022-12-10青少年软件编程(C语言)等级考试试卷(五级)解析T1、漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:10…...

刷题专练之链表(一)

文章目录前言一、 移除链表元素1.题目介绍2.思路3.代码二、反转链表1.题目介绍2.思路3.代码三、链表的中间结点1.题目介绍2.思路3.代码四、链表的中间结点1.题目介绍2.思路3.代码前言 以下是链表经常考的面试题&#xff0c;我在这里进行归纳和讲解&#xff0c;采取的是循序渐进…...

elasticsearch高级查询api

yml配置 #es配置 spring:elasticsearch:rest:uris: 192.168.16.188:9200添加依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>使用编程的形式…...

网站设计建设简历/怎么接游戏推广的业务

本文实例讲述了java删除指定目录下所有空文件夹的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;package com.func;import java.io.File;import java.util.ArrayList;import java.util.List;/*** 删除指定目录下的所有空文件夹** author zdw**/public class File…...

什么程序做网站安全/合肥网络关键词排名

dhcp 端口 UDP67和UDP68为正常的DHCP服务端口 rpm -qa | grep dhcp 查询是否安装了dhcp 服务 安装dhcp 服务 yum install dhcp -y 打开/etc/dhcp/dhcpd.conf subnet 192.168.105.0 netmask 255.255.255.0 { 下发网段 range 192.168.105.20 192.168.105.200 ; …...

手机能用的网站/内部优化

信号处理 信号处理是指信号的表示&#xff0c;变换和运算以及提取它们所包含的信息。如我们可以分开两个或多个混在一起的信号&#xff0c;或者增强信号中某些成分的参数。 信号处理基础 信号分为数字信号和模拟信号&#xff0c;在计算机中连续信号只能让信号的离散时间间隔…...

信息网站设计案例/猪肉价格最新消息

2月11日消息&#xff0c;日前&#xff0c;红黄蓝教育&#xff08;NYSE&#xff1a;RYB&#xff09;发布公告&#xff0c;宣布以1.25亿元收购新加坡一家民营儿童教育集团近70%的股权&#xff0c;并即将从“RYB Education”更名为“GEH Education”&#xff0c;目前尚未公布对应的…...

帮你做决定的网站/今日新闻最新消息

此方法涉及多媒体信息处理领域&#xff0c;包括计算机智能、模式识别、机器学习领域。背景技术&#xff1a;&#xff1a;人类的动作检测识别方法&#xff0c;在当今社会具有非常广泛的应用&#xff0c;例如&#xff1a;智能监控、人机交互的体感游戏、视频检索等等。基于RGB-D(…...

公司建设网站的申请信用卡/百度图片搜索网页版

固定模板方式&#xff0c;首先创建要Excel数据列模板&#xff1b;当然EasyExcel 中也可以动态自定义表头&#xff0c;其实都差不多一样 下面案例中&#xff0c;我采用一个固定模板方式&#xff0c;主要记录下&#xff0c;如何自定义单元格样式 这里是导出方法&#xff0c;主要…...