STATS 782 - R Basic Concepts

news2024/9/20 16:59:56

文章目录

  • 前言
  • 一、R basic
    • 1. R Operator
    • 2. 变量赋值
    • 3. c() - combine 函数
    • 4. 对向量的操作
    • 5. Special Numerical Values
  • 二、 Built-in Functions
    • 1. min, max and range
    • 2. sum and prod
    • 3. Cumulative Summaries
    • 4. paste
    • 5. list()
    • 6. seq()
    • 7. rep()
  • 总结


前言

本系列是 STATS 782的课程笔记,主要记录使用 R 语言的一些技巧。


一、R basic

1. R Operator

在这里插入图片描述
①:→ 生成数字序列

> 1:50
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
[35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

② %% → 取余(求模)

5 %% 2
# 输出结果为 1,因为 5 除以 2 的余数是 1

③ %/% → 整除

7 %/% 3
# 输出结果为 2,因为 7 除以 3 的商是 2.3333,整数部分为 2

2. 变量赋值

在这里插入图片描述

3. c() - combine 函数

用于创建一维向量(vector)和组合数据,可以将多个数值、字符或逻辑值组合成一个向量:

① 创建一个数值向量:

num_vector <- c(1, 2, 3, 4, 5)
> num_vector
[1] 1 2 3 4 5

② 组合已有的向量:

vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
combined_vector <- c(vector1, vector2)

③ The Recycling Rule:
当 c 函数合并的两个向量长度不同时,

First enlarge the shorter vector by recycling its elements, then combine the vectors element by element.

> c(1, 2, 3, 4) + c(1, 2)
[1] 2 4 4 6

在这里插入图片描述

4. 对向量的操作

① 截取向量:
R语言中向量的索引从 1 开始,

> vector_total
[1] 1 0 2 4

> vector_total[1]
[1] 1

> vector_total[1:3]
[1] 1 0 2

> vector_total[c(1, 3)]
[1] 1 2

> vector_total[c(-1, -3)]
[1] 0 4

或截取满足条件的向量value:

> x = c(1, 2, 3, 4)
> x[x > 2]
[1] 3 4

② 改变向量 value
先获取向量,再赋值,即可完成修改value,

> vector_total[1:3] <- 0
> vector_total
[1] 0 0 0 4

使用 ifelse 函数修改:

> x = 1:10
> ifelse(x > 5, x, -x)
[1] -1 -2 -3 -4 -5 6 7 8 9 10

5. Special Numerical Values

① Infinity:
0 作为分母时,根据分子的正负值,得到结果正无穷 / 负无穷

> 1 / 0
[1] Inf
> -1 / 0
[1] -Inf

② NaN:
Not a Number,特殊的常量,代表 “Not a Number”(非数值)。NaN 通常是由数学运算的未定义或不可表示结果导致的:

sqrt(-1)  # 对负数开平方根
# 输出结果为 NaN

0 / 0  # 0 除以 0
# 输出结果为 NaN

log(-1)  # 对负数取对数
# 输出结果为 NaN

③ NA:
Not Available,indicate that a value is missing or not available:

# Any arithmetic expression which contains NA will produce NA as a result.
> 1 + sin(NA)
[1] NA

二、 Built-in Functions

在这里插入图片描述

1. min, max and range

The functions min and max return the minimum and maximum values contained in any of their arguments, and the function range returns a vector of length 2 containing the minimum and maximum of the values in the arguments.

> max(1:100)
[1] 100
> max(1:100, Inf)
[1] Inf
> range(1:100)
[1] 1 100

2. sum and prod

The functions sum and prod compute the sum and product of all the elements in their arguments.

> sum(1:100)
[1] 5050
> prod(1:10)
[1] 3628800

3. Cumulative Summaries

> cumsum(1:10)
[1] 1 3 6 10 15 21 28 36 45 55
> cumprod(1:6)
[1] 1 2 6 24 120 720
> cummax(1:10)
[1] 1 2 3 4 5 6 7 8 9 10
> cummin(1:10)
[1] 1 1 1 1 1 1 1 1 1 1

4. paste

Strings can be “glued together” by using paste.
默认以空格分隔:

> paste("First", "Second", "Third")
[1] "First Second Third"

> paste("First", "Second", "Third", sep = ":")
[1] "First:Second:Third"

> paste("First", "Second", "Third", sep = "")
[1] "FirstSecondThird"

对向量进行操作:

> paste(s, "element", sep = "-")
[1] "initial-element" "second-element"
[3] "third-element"

> paste(s, collapse = " -> ")
[1] "initial -> second -> third"

5. list()

The elements of vectors must all be of the same basic type. Lists provide a way of storing things of different types in a single object.

> lst = list(10, "eleven", TRUE)

> lst = list(1:10, "eleven", TRUE)
> lst
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
[1] "eleven"

[[3]]
[1] TRUE

6. seq()

功能与 “:” 类似,但 “:” 步进只能为 1,

> seq(0, 1, by = .1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> seq(0, 1, length = 11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> seq(0, by = .1, length = 11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> seq(to = 1, by = .1, length = 11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

7. rep()

The first argument to rep gives the values to be repeated and the second specifies how many times to repeat them.

> rep(1:4, 3)
[1] 1 2 3 4 1 2 3 4 1 2 3 4

> rep(1:4, c(2, 3, 2, 3))
[1] 1 1 2 2 2 3 3 4 4 4

> rep(c("A", "B", "C"), 3)
[1] "A" "B" "C" "A" "B" "C" "A" "B" "C"

总结

本文回顾了 STATS 782 第一章节的内容,介绍了R语言的基本运算符,数据类型等,以及一些常用的内置函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity VR开发】结合VRTK4.0:添加遮蔽追踪器

语录&#xff1a; 恋爱应该是双方扶持对方共同完成自己的目标&#xff0c;而不是虚幻的思想、肤浅的物质、和纸醉金迷的生活。 前言&#xff1a; 遮蔽追踪器&#xff08;Trackers.ObscuranceTracker&#xff09;是基于游戏对象存在或不可见之间切换对象的状态&#xff0c;从而遮…

SpringBoot 通过AOP + Redis 防止表单重复提交

Spring Boot是一个用于构建Web应用程序的框架&#xff0c;通过AOP可以实现防止表单重复提交。在这篇博客中&#xff0c;我将介绍如何使用AOP来防止表单重复提交。 配置Redis 1. 添加Redis依赖 <dependency><groupId>org.springframework.boot</groupId>&…

【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

目录 🐱背景🐱工具🐱分析流程🐔登陆分析🐔检索分析🐔模拟HTML代码请求🐔 解析HTML🐔 再次分析🐟分析js算法🐟 拿下furl🐟拿下sfname🐟拿下sfname🐔 构造请求🐔再次瓶颈🐔分析cookie🐟 成功演示🐱总结

【历史上的今天】3 月 24 日:苹果推出 Mac OS X;微软前任 CEO 出生;Spring 1.0 正式发布

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 3 月 24 日&#xff0c;在 2016 年的今天&#xff0c;暴雪娱乐公司发布了第一人称射击多人游戏《守望先锋》。根据评分汇总网站 Metacritic 的统计&#xff0c…

新形势新政策下建企分包分供管理模式优化探索

通过建筑工程分包的模式&#xff0c;总包商可以有效地扬长避短&#xff0c;选择最有优势的分包企业&#xff0c;提高资源的使用效率&#xff0c;有利于在激烈的市场竞争中取得一席之地。当前&#xff0c;国内建筑市场工程分包总体运行情况良好&#xff0c;但还是存在着诸多阻碍…

Postcat 如何生成接口文档,2 分钟学会

Postcat 是一个强大的开源、跨平台&#xff08;Windows、Mac、Linux、Browsers...&#xff09;的 API 开发测试工具&#xff0c;支持 REST、Websocket 等协议&#xff08;即将支持 GraphQL、gRPC、TCP、UDP&#xff09;&#xff0c;帮助你加速完成 API 开发和测试工作。 作为代…

研读Rust圣经解析——Rust learn-12(智能指针)

研读Rust圣经解析——Rust learn-12&#xff08;智能指针&#xff09; 智能指针智能指针选择Box<T>使用场景创建Box使用Box在堆上存储递归类型数据解决 通过 Deref trait 将智能指针当作常规引用处理追踪指针的值创建自定义的智能指针&#xff08;*&#xff09; Deref隐式…

手把手实现一个lombok

手把手实现一个lombok 一、lombok原理 JSR269二、实现步骤1.工程与环境依赖注意细节 2.注解处理器3.注解4.jcTree 修改语法4.新建模块依赖我们这个jar包进行编译5.源码调试 一、lombok原理 JSR269 什么是JSR &#xff1f; JSR是Java Specification Requests的缩写&#xff0c…

python 神经网络回归

神经网络回归数据&#xff0c;21条&#xff0c;每条12个月&#xff0c;根据输入预测下一年 数据集&#xff1a; 下载链接 620906209062090620906209062090620906209062090620906209062090660936365969622628916949069597656066534455211622826735957783727886869762952670916…

【远程访问及控制】

目录 一、OpenSSH服务器1.1、SSH远程管理1.2、ssh服务器的端口1.3、修改端口号1.4、设置用户登录 二、实验2.1、设置白名单2.2、设置黑名单 三、sshd 服务支持两种验证方式:3.1、密码验证3.2、密钥对验证公钥和私钥的关系&#xff1a; 四、使用SSH客户端程序4.1、ssh 远程登录4…

java项目之疫情网课管理系统(springboot+vue源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的疫情网课管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

Java集合框架(Collection)

集合框架 一个Java对象可以在内部持有若干其他Java对象&#xff0c;并对外提供访问接口&#xff0c;把这种Java对象称为集合 集合框架都包含三大块内容&#xff1a;&#xff08;接口、实现、算法&#xff09; &#xff08;1&#xff09;对外的接口 &#xff08;2&#xff09;…

【C++】string类的简单模拟实现

目录 string类初识 string模拟实现 string类成员变量 构造函数 拷贝构造 赋值运算符重载 析构函数 深浅拷贝问题 string类初识 由于C语言中的字符串不太符合OOP(面向对象编程)的思想&#xff0c;而且其底层空间需要用户自己管理&#xff0c;经常有访问越界的情况出现。…

模仿风宇博客登录蒙层弹窗(vuex+computed实现)

效果图 使用了动态组件做组件切换使用vue内置的transition组件实现过渡效果&#xff0c;蒙层 和 弹框 都使用了transition&#xff0c;并嵌套vuex computed计算属性&#xff0c;实现数据 和 方法共享&#xff0c;让其它组件也能够控制到登录弹框蒙层使用了固定定位未实现&…

读取注册表中的REG_QWORD和REG_BINARY(二进制)类型数据

读取注册表中的REG_QWORD和REG_BINARY二进制类型数据 发现的问题注册表中的一些概念&#xff08;统一认识&#xff09;读取代码&#xff08;字节数据大于8的会显示f开头的前缀&#xff09;说明&#xff08;备注&#xff09;改进代码参考链接 发现的问题 首先我们要明确&#x…

【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )

文章目录 一、RecyclerView 数据绑定核心要点1、启用数据绑定 / 导入依赖2、RecyclerView 条目 DataBinding 布局3、自定义 RecyclerView.Adapter 适配器要点 ( 本博客重点 ★ ) 二、RecyclerView 数据绑定源码示例1、build.gradle 构建脚本 ( 启用数据绑定 / 导入依赖 )2、主界…

ggplot中的注释图层annotate

文章目录 介绍利用注释层添加图形利用注释层添加文本利用注释层添加公式 介绍 ggplot作图包中除了常见的geom图层外&#xff0c;还有一个annotate的注释图层&#xff0c;实现对作图对象的额外添加&#xff0c;其添加要素不在ggplot()所接受的数据框中。 利用注释层添加图形 …

家政服务APP小程序开发功能详解

随着人们生活水平的提高&#xff0c;对家政服务的要求也越来越高。而传统的到家政公司寻找服务人员的方法显然已经无法满足人们需求&#xff0c;取而代之的是线上预约家政服务。家政服务App小程序软件可以满足用户在线预约&#xff0c;还可以根据自己的需求定制家政服务、选择家…

【Hadoop-CosDistcp】通过CosDistcp的方式迁移Cos中的数据至HDFS

【Hadoop-CosDistcp】通过CosDistcp的方式迁移Cos中的数据至HDFS 1&#xff09;功能说明2&#xff09;使用环境3&#xff09;下载与安装4&#xff09;原理说明5&#xff09;参数说明6&#xff09;使用示例7&#xff09;迁移 Cos 中的数据至 HDFS 及数据校验7.1.数据迁移7.2.数据…

【Unity入门】16.脚本引用组件

【Unity入门】脚本引用组件 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;脚本引用普通组件 &#xff08;1&#xff09;点击控制音频播放 还记得我们的车载音乐AudioSource吗&#xff1f;…