R语言入门看这一章就够了(上)

news2024/11/16 2:14:07

目录

一、R的基础

1.1、R的安装

1.2、牛刀小试

1.3、线性关系实例

1.4、工作空间

1.5、R包的使用

包的安装

结果的重用

二、R数据集

2.1、向量

2.2、矩阵

2.3、数组

2.4、数据框

2.5、列表

三、R的常用命令

四、list列表详解

五、数据源导入方法

5.1、键盘输入

5.2、从文本文件导入

5.3、导入Excel数据

六、访问MYSQL数据库


一、R的基础

1.1、R的安装

提示:想要R语言和RStudio安装包的私信我。

第一步:双击安装包

第二步:一直下一步,选择安装路径

这里最好不要放到C盘,也不要有中文路径,空格路径。

第三步:一直无脑下一步,等待安装即可

第四步:双击桌面R图标

1.2、牛刀小试

我们来编写一段代码:

x <- rnorm(3)
x

第一句代码表示随机生成3个数字赋值给变量x。

第二句代码表示获取变量x。

1.3、线性关系实例

> age <- c(1,3,5,2,11,9,3,9,12,3)   # 年龄数据集
> weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)  # 体重数据集
> 
> mean(weight) # 体重平均数
[1] 7.06
> sd(weight) # 体重标准差
[1] 2.077498
> cor(age,weight) # 年龄和体重的线性关系
[1] 0.9075655
> plot(age,weight) # 画图表示关系
> 

1.4、工作空间

就是代码和文档都放在哪个目录下了,最好一个项目一个工作空间。

> getwd() # 获取你所在的工作空间
[1] "C:/Users/DELL/Documents"

如果你不喜欢这个目录,你可以通过setwd("c:/Users/')去修改。

1.5、R包的使用

R自带了一系列默认包(包括base、datasets、graphics、methods等等),它们提供了种类繁多的默认函数和数据集。

包的安装

比如我想安装名为car的包,使用如下命令:

install.packages("car")

这时他会提示你使用哪个镜像来下载,我们当然要选国内的镜像了,这样下载速度会快。

下载完需要把car包绑定到我们的环境下:

library(car)

我们输入一行命令测试一下:

> head(mtcars)

出现这个结果就代表安装car包成功了。

结果的重用

R语言的结果可以很好的保存,并且可以作为下一次使用的参数传进去。

比如:

> result <- lm(mpg~wt, data=mtcars) # 做线性拟合
> plot(result)

二、R数据集

按照某种格式来创建数据集,是任何数据分析的第一步。

(1)选择一种数据结构来存储。

(2)将数据输入或导入到这个数据结构中。

R拥有许多用于存储数据的对象类型,包括向量、矩阵、数组、数据框和列表

2.1、向量

其实就是一个一维数组,而且里面的元素必须是相同类型的。

比如:

> a <- c(1,2,3,4,5,6)  # 创建一个向量数据集,里面都是相同类型的
> a
[1] 1 2 3 4 5 6
> 
> a[2]  # 通过下标取出相应的元素
[1] 2
> a[5]
[1] 5
> 

2.2、矩阵

是二维数据,并且元素类型必须一致。

比如:

> y <- matrix(5:24, nrow=4, ncol=5)  #创建5-24位数字,4行5列的矩阵数据集
> y
     [,1] [,2] [,3] [,4] [,5]
[1,]    5    9   13   17   21
[2,]    6   10   14   18   22
[3,]    7   11   15   19   23
[4,]    8   12   16   20   24
> 
> x <- c(2,45,68,94)
> rnames <- c("R1","R2") # 创建矩阵行名
> cnames <- c("C1","C2") # 创建矩阵列名
> newMatrix <- matrix(x, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames,cnames))
> newMatrix
   C1 C2
R1  2 45
R2 68 94
> 

2.3、数组

与矩阵相似,但它的维度是大于2的。

比如:

> dim1 <- c("A1","A2","A3")
> dim2 <- c("B1","B2")
> dim3 <- c("C1","C2","C3","C4")
> d <- array(1:24, c(3,2,4), dimnames=list(dim1,dim2,dim3)) # 生成4个矩阵,每一个都是3*2的格式
> d
, , C1

   B1 B2
A1  1  4
A2  2  5
A3  3  6

, , C2

   B1 B2
A1  7 10
A2  8 11
A3  9 12

, , C3

   B1 B2
A1 13 16
A2 14 17
A3 15 18

, , C4

   B1 B2
A1 19 22
A2 20 23
A3 21 24

> 

获取数组里的元素:

> d[1,2,3]  # 取第3个矩阵里的第1行,第二列的数据
[1] 16
> 

2.4、数据框

数据框中,可以存在不同类型的数据,比如下面的列表:

病人编号、入院时间、年龄都是数值类型的,后面糖尿病类型和病情都是字符串类型。

比如:

> patientID <- c(1,2,3,4) # 创建病人编号(第一列数据)
> age <- c(25,34,28,52) # 创建年龄(第二列数据)
> diabetes <- c("Type1", "Type2", "Type3", "Type2") # 创建糖尿病类型(第三列数据)
> status <- c("poor", "Improved", "Excllent", "poor") # 创建病情(第四列数据)
> patientsData <- data.frame(patientID, age, diabetes, status) # 创建数据框数据集
> patientsData # 打印
  patientID age diabetes   status
1         1  25    Type1     poor
2         2  34    Type2 Improved
3         3  28    Type3 Excllent
4         4  52    Type2     poor
> 
> patientsData[1:2] # 获取patientsData变量的第一列到第二列数据
  patientID age
1         1  25
2         2  34
3         3  28
4         4  52
> 
> patientsData[c("age")] # 获取patientsData变量的age那列数据
  age
1  25
2  34
3  28
4  52
> 
> patientsData$age # 获取patientsData变量的age那列数据
[1] 25 34 28 52
> 
> attach(patientsData) # 将变量绑定,以后就可以直接使用列名打印了,就不用$符号了
The following objects are masked _by_ .GlobalEnv:

    age, diabetes, patientID, status

> age
[1] 25 34 28 52
> 

2.5、列表

创建列表:

> g <- "My first list"  # 创建字符串
> h <- c(12, 45, 43, 90) #创建向量数据集,里面是数值类型
> j <- matrix(1:10, nrow=2) # 创建矩阵数据集,1-10,两行
> k <- c("A", "B", "C") # 创建向量数据集,里面是字符串类型
> mylist <- list(g, h, j, k) # 创建列表数据集
> mylist
[[1]]
[1] "My first list"

[[2]]
[1] 12 45 43 90

[[3]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

[[4]]
[1] "A" "B" "C"

> 
> mylist[[2]]  # 获取列表里第二个元素
[1] 12 45 43 90
> 
> mylist[[3]]  # 获取列表里第三个元素
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> 

三、R的常用命令

(1)查询所有的变量

ls()
> ls()
character(0)
> data <- c(1,2,3)
> ls()
[1] "data"

(2)移除某个变量

rm(变量名)
> rm(data)
> ls()
character(0)

(3)获取向量长度

length(变量名)
> v <- c(1, 2, 3)
> length(v)
[1] 3

(4)获取变量所属类型

mode(变量名)
> v <- c(1, 2, 3)
> mode(v)
[1] "numeric"

(5)各种方式形成向量

seq(1, 10, 2)  # 生成一个从1开始到10结束,步长为2的向量
> x <- seq(1, 10, 2)
> x
[1] 1 3 5 7 9
rep(5, 10)  # 生成10个5的向量
> x <- rep(5, 10)
> x
 [1] 5 5 5 5 5 5 5 5 5 5
> x <- rep(1:3, 3)
> x
[1] 1 2 3 1 2 3 1 2 3
> x <- c(1, 20, 50, -5, -35, -80)
> x
[1]   1  20  50  -5 -35 -80
> x[x > 0]  # 获取大于0的向量
[1]  1 20 50
> x[x < -10 | x > 0]  # 获取小于-10或者大于0的向量
[1]   1  20  50 -35 -80
> 

四、list列表详解

> mylist <- list(stud.id=1234, stud.name="Tom", stud.marks=c(12, 3, 14, 25, 19))  # 创建一个列表
> mylist  # 打印列表
$stud.id
[1] 1234

$stud.name
[1] "Tom"

$stud.marks
[1] 12  3 14 25 19

> mylist[[1]]  # 获取列表mylist的第一个元素值
[1] 1234
> mylist[[3]]  # 获取列表mylist的第三个元素值
[1] 12  3 14 25 19
> mylist[1]  # 获取列表mylist的第一个整元素值
$stud.id
[1] 1234

> mode(mylist[[1]])  # 获取列表mylist第一个元素的类型
[1] "numeric"
> mode(mylist[1])  # 获取列表mylist第一个整元素的类型
[1] "list"
> mylist$stud.id  # 和mylist[[1]]同理
[1] 1234
> names(mylist)  # 获取列表mylist的所有元素名
[1] "stud.id"    "stud.name"  "stud.marks"
> names(mylist) <- c("id", "name", "marks")  # 列表mylist里的元素改名
> mylist
$id
[1] 1234

$name
[1] "Tom"

$marks
[1] 12  3 14 25 19

> mylist$parents <- c("Mna", "Jutice")  # 为列表mylist增加新元素parents
> mylist
$id
[1] 1234

$name
[1] "Tom"

$marks
[1] 12  3 14 25 19

$parents
[1] "Mna"    "Jutice"

> mylist <- mylist[-4]  # 列表mylist删除第四个元素
> mylist
$id
[1] 1234

$name
[1] "Tom"

$marks
[1] 12  3 14 25 19

> other <- list(age=19, sex="male")  # 创建列表赋值给other变量
> lst <- c(mylist, other)  # 将列表mylist和列表other合并成一个列表赋值给lst
> lst
$id
[1] 1234

$name
[1] "Tom"

$marks
[1] 12  3 14 25 19

$age
[1] 19

$sex
[1] "male"

> unlist(lst)  # 将列表转为向量形式,方便循环遍历
    id   name marks1 marks2 marks3 marks4 marks5    age    sex 
"1234"  "Tom"   "12"    "3"   "14"   "25"   "19"   "19" "male" 

解释一下unlist()函数:

比如向量我们很容易遍历,就是从1遍历到100,但是list的元素是可以多类型的,比如说list列表中第一个元素是向量,向量里又有1,2,3,4,5元素,那list列表第二个元素是矩阵,矩阵又包含二维数据,那么我们遍历就很麻烦,所以使用unlist函数先转为向量模式,再遍历就方便多了。

五、数据源导入方法

5.1、键盘输入

> mydata <- data.frame(age=numeric(0), gender=character(0), weight=numeric(0))  # 创建数据框,但里面元素只是定义了名字和类型,却没有数据
> mydata <- edit(mydata)  # edit的意思是我们要手动键盘录入数据

fix(mydata)和mydata <- edit(mydata)是等价的。

5.2、从文本文件导入

先看看数据,是一个叫person.txt的文件,内容是:

id,name,age,school
1,李白,20,哈尔滨工业大学
2,杜甫,30,哈尔滨工程大学
3,白居易,19,哈尔滨理工大学
4,杜牧,23,东北林业大学
5,李清照,27,东北农业大学
> mydata <- read.table("D:/Java/R/resources/person.txt", header=TRUE, sep=",", encoding="UTF-8")
> mydata
  id   name age         school
1  1   李白  20 哈尔滨工业大学
2  2   杜甫  30 哈尔滨工程大学
3  3 白居易  19 哈尔滨理工大学
4  4   杜牧  23   东北林业大学
5  5 李清照  27   东北农业大学

5.3、导入Excel数据

这个不能直接用read.table去读取Excel文件,得先把我们的Excel文件先另存为csv格式,这样就可以读取了。

我们的数据是这样的:

> mydata <- read.table("D:/Java/R/resources/student.csv", header=TRUE, sep=",", encoding="UTF-8")
> mydata
  ID   姓名 年龄         学校
1  1   李白   20     南京大学
2  2   杜甫   30     东南大学
3  3 白居易   40 南京理工大学

六、访问MYSQL数据库

install.packages("RODBC")

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

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

相关文章

黔院长 | 黄帝内经:人有四经十二从!

"人有四经十二从"这句话出自《黄帝内经素问》&#xff0c;“四经”指的是与四时相应的正常脉象&#xff0c;也是指四个主要经络&#xff1a;太阳经、少阳经、太阴经和少阴经。在中医理论当中这些经络被认为是人体气血运行的通道。 而“十二从”则表示人体的十二个经脉…

VulnHub Metasploitable-2

一、信息收集 nmap扫描 访问80端口 二、漏洞利用 1.漏洞一 1.vsftpd 2.3.4&#xff08;CVE-2011-2523&#xff09; 2.msf msf6 > search vsftpd msf6 > use 0 msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set rhosts 192.168.103.189 msf6 exploit(unix/ftp/vs…

ATV32变频器在堆垛机应用

一、机型介绍&#xff1a; 目前国内物流行业发展速度很快&#xff0c;特别是在自动仓库这一块&#xff0c;自动仓库用的最多是堆垛机&#xff0c;自动仓库目前驱动用得基本上变频器。品牌基本是丹佛斯、日系及其他等重载系列变频器。设备主要包括&#xff1a;提升机、货叉及行…

【Java题】输出基本数据类型的最大值和最小值,以及float和double的正无穷大值和负无穷大值

一&#xff1a;代码 public class Test {public static void main(String[] args) {//输出byte型的最大值与最小值System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//输出short型的最大值与最小值System.out.println(Short.MAX_VALUE);System.out.pri…

2023-2024 年最佳 6 款数据恢复软件免费在线下载

如果您正在寻找在线数据恢复工具来帮助自己摆脱数据丢失的麻烦&#xff0c;这篇文章可以为您提供帮助。我们讲解如何免费在线恢复数据&#xff0c;并从兼容性、适用性、易用性、价格等角度分享了市场上六款著名的数据恢复软件。每个在线恢复工具都是安全的&#xff0c;并且可以…

植物大战僵尸 forMac/Windows系统中文版:一场惊心动魄的生存之战

在充满惊喜与挑战的《植物大战僵尸》游戏中&#xff0c;一场奇妙的生存之战正等待着你。为了保护你的大脑&#xff0c;你必须组建一支植物军队&#xff0c;利用各种独特的植物和能力&#xff0c;抵御一波又一波的僵尸大军。现在就让我们深入了解这款引人入胜的游戏&#xff0c;…

【C++】Linux下如何查看opencv的版本

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Bootstrap的咖啡网站实例代码阅读笔记

目录 01-index.html的完整代码02-图片可以通过类 rounded-circle 设置为圆形显示03-<li class"nav-item mt-1 a">中&#xff0c;类mt-1是什么意思&#xff1f;类a又是什么意思&#xff1f;04-href"javascript:void(0);"是什么意思&#xff1f;05-类f…

Java 浅拷贝会带来的问题

Java 浅拷贝会带来的问题 一&#xff0c;常见问题 Java 中的浅拷贝是指在对象拷贝时&#xff0c;只复制对象的引用&#xff0c;而不是对象本身。这意味着浅拷贝会导致多个对象共享同一块内存空间&#xff0c;当一个对象修改共享内存时&#xff0c;其他对象也会受到影响。 下…

Ubuntu下使用Docker的简单命令

1&#xff1a;要在Ubuntu下使用Docker首先需要提权&#xff0c;Ubuntu下root是没有密码的。注意前导符的变化$是普通用户&#xff0c;#是管理员。 sudo -i2&#xff1a;运行一个容器。-d是后台运行&#xff0c;-p是把http的端口号由80变成8080。 docker run -d -p 8080:80 ht…

php之 角色的权限管理(RBAC)详解

RBAC&#xff08;Role-based access control&#xff09;是一种常见的权限管理模型&#xff0c;通过将用户分配至特定的角色&#xff0c;以及为角色分配访问权限&#xff0c;实现了权限管理的目的。以下是关于RBAC的详细解释&#xff1a; 角色&#xff1a;RBAC模型的核心是角色…

[RISC-V]verilog

小明教IC-1天学会verilog(7)_哔哩哔哩_bilibili task不可综合&#xff0c;function可以综合

FL Studio21水果编曲软件如何切换成官方中文版

FL studio又被国内网友称之为水果音乐制作软件21版本&#xff0c;是Image-Line公司成立23周年而发布的一个版本&#xff0c;FL studio中文版是目前互联网上最优秀的完整的软件音乐制作环境或数字音频工作站&#xff0c;FL Studio包含了编排&#xff0c;录制&#xff0c;编辑&am…

面试题:百万数据的导入导出解决方案,怎么设计?

文章目录 前景1 传统POI的的版本优缺点比较HSSFWorkbookXSSFWorkbookSXSSFWorkbook 2 使用方式哪种看情况3 百万数据导入导出&#xff08;正菜&#xff09;想要解决问题我们首先要明白自己遇到的问题是什么&#xff1f;解决思路&#xff1a;3.1 EasyExcel 简介3.2 300w数据导出…

P1494 [国家集训队] 小 Z 的袜子

这一题是一个关于多次查询区间状态的一个问题&#xff0c;暴力肯定会超限&#xff0c;但是可以用莫队来优化暴力。 莫队的思想就是&#xff0c;用上一个区间的状态来更新当前区间的状态。 问题就是状态怎么更新以及求出当前区间的状态、也就是有多少对相同的袜子以及总共有多…

禁止chrome浏览器更新方式

1、禁用更新服务 WinR调出运行&#xff0c;输入services.msc&#xff0c;进入服务。 在服务中有两个带有Google Update字样&#xff0c;双击打开后禁用&#xff0c;并把恢复选项设置为无操作。 2、删除计划任务 运行taskschd.msc&#xff0c;打开计划任务程序库&#xff0c;在…

uniapp 中添加 vconsole

uniapp 中添加 vconsole 一、安装 vconsole npm i vconsole二、使用 vconsole 在项目的 main.js 文件中添加如下内容 // #ifdef H5 // 提交前需要注释 本地调试使用 import * as vconsole from "vconsole"; new vconsole() // 使用 vconsole // #endif三、成功

Redis中的数据类型及与Mysql数据库同步方法

1.Redis中的数据类型 Redis中的数据类型包括&#xff1a; 排行榜应选用有序集合Zset&#xff0c;原因是排行榜既要去重&#xff0c;也要排序&#xff0c;用这种结构最为合适。 2.Redis和MySQL之间的同步常见方法 要实现Redis和MySQL之间的同步&#xff0c;常见方法包括&…

为什么网上的流量卡都有禁发地区呢?流量卡管控地区整理!

在网上购买过流量卡的朋友应该都知道&#xff0c;但凡是运营商推出的大流量优惠套餐&#xff0c;在套餐详情中都是有禁发地区&#xff0c;只不过每张卡的禁发地区不同而已。 设置禁发地区的主要目的还是为了防止一些电信诈骗案件的发生&#xff0c;或者违法违规利用电话卡的情…

Windows-Oracle11g 安装详解-含Navicate远程连接配置 -本地监听设置及更换navicate环境指向的oci.dll

文章目录 1 下载地址&#xff1a;2 安装2.1 解压缩运行setup2.2 修改配置文件2.3 一直选择默认&#xff0c;直到设置口令2.4 Oracle服务启动 3 登录Oracle4 解锁普通用户scott5 简化连接&#xff08;可做可不做&#xff09;5.1 修改配置文件5.2 添加内容 6 配置本地监听6.1 修改…