R语言学习笔记1_初级

这篇具有很好参考价值的文章主要介绍了R语言学习笔记1_初级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • R的下载
  • R语言基础
    • 初始调整
    • R包的安装&卸载
    • 向量
      • 数值型向量
      • 逻辑型向量
      • 字符串向量
      • 因子型向量(分类)
    • 列表
    • 矩阵
    • 数组
    • 数据框(类似Excel)
      • 数据框操作
      • 重新命名
      • 数据框合并&切分

R的下载

  • R官网:百度 CRAN → the comprehensive r aichive network → Task View/Package
  • RStudio官网:www.RStudio.com
  • 学习网站:Rbloggers \ Rdocumentation \ 统计之都

R语言基础

初始调整

  • Tools → Global Options → Appearance调整输入字体版式
  • Code → Saving改UTF-8
  • Packages 改下载地址至中国

R包的安装&卸载

  • 方法一:Packages → install键入
    勾选install dependencies一并加载关联包
  • 方法二:使用代码
    install.packages('ggplot2') #注意加英文引号
    Tab键可直接调出其它参数
  • 方法三:从Github中下载包
    先下载devtools包 → 再加载library(devtools) → install_github('lijian13/rinds')
  • .libPaths() 可显示电脑中R包的位置
  • 卸载包:①点Package界面中×直接卸载。②remove.packages()卸载包

向量

  • 赋值符号<-
x <- 1  #给x赋值1
z <- 1:5 #给z赋值1 2 3 4 5
a <- c(1,2,4,3,5) #给a赋值向量(1 2 4 3 5)
identical(a,z) #判断a和c是否完全一致(虽元素一致但方向不一致)
  • 提取和增删
a[3] #在a中提取第三个的元素
vector1 <- 1:10
vector1[1:4] #输出vector1中前四个元素
vector1[6:10] #输出vector1中后五个元素
vector1[-c(2,5,8)] #去掉第2,5,8个元素

c函数(combine)是常用的向量生成函数

  • 加减运算
x <- 1:5
y <- 6:10
x+y #元素两两相加
x <- 1
x+y #y每个元素加1

数值型向量

  • 生成一个数值型向量
vector1 <- c(1:3,6:10)
x <- 1
class(x) #判断x类别 "numeric"代表数值型
is.integer(x) #判断x是否是整型 不是整型 

注意:与Python等语言不同,R语言中数字就是数值型,而不是整型或浮点型

y <- 1:3
class(y) #而加了冒号之后的y就是整型了
  • seq函数
seq(from = 1, to = 5, by = 0.5) #生成从1到5步长为0.5的向量
seq(from = 5, to = 1, by = -0.5) #生成从5到1步长为-0.5的向量
seq(1,6,length.out = 3)
seq(1,6,len = 3) #生成1到6分成三份
seq(1,5,along.with = 1:3)
  • rep函数
rep(c(1:3),times = 5) #1:3重复5次
rep(c(1:3),each = 5) #每个元素重复5次
rep(c(1,3),len = 9) #生成向量长度为9
  • length函数
x <- rep(1:2,times = 4)
length(x) #生成向量x的长度

逻辑型向量

  • 生成一个逻辑性向量
logit <- rep(c(TRUE,FALSE), len = 5)
logit #生成一组长度为5的逻辑向量
sum(logit) #逻辑型向量可加减TRUE=1,FALSE=0
  • 逻辑表达式的运用
logit1 <- c(100>99, 100>101)
logit1
class(logit1)

注意:逻辑判断符号为 ==(R中不用 =,而是 == 双等号)

logit2 <- (c(100!=1)) #!= 代表不等于
logit2
c(100>90 & 100>110) #&代表且
c(100>90 | 100>110) #|代表或
x <- seq(1,100,length.out = 20) #1到100生成长度20的向量
index <- x > 80 
x[index] #找到x中大于80的向量 #注意[]在接受逻辑型向量时会直接返回TRUE的值
which(x>80) #返回x>80的下标
x[which(x >80)] #返回x>80的下标的值
  • 练习:找到x中大于80、小于90的数
index <- 80<x & x<90
x[index]
x[which(x>80 & x<90)]

字符串向量

  • 生成一个字符串向量
string <- c('abc','def',1,2)
class(string[3])
is.character(string) #判断string向量是否是字符串类型
  • letters用法
letters #a-z 26个小写字母
LETTERS #A-Z 26个大写字母
letters[1:5]
letters[25:28] #返回"y" "z" NA  NA
y <- 1:5
y[6] #返回NA

因子型向量(分类)

  • 生成因子型向量
my_fac <- factor(x = rep(c(1,2),times=5),levels = c(1,2),labels = c('Male','Female'))
class(my_fac)
my_fac1 <- factor(LETTERS[1:5], labels = letters[1:5]) #将大写字母用小写标签
#n表示因子水平个数,k表示每个因子重复次数
my_fac2 <- gl(n=2, k=5, labels = c('Control','Treatment')) 
my_fac3 <- gl(n = 2, k = 1, length = 8, labels = c('Control','Treatment'))
temp_string <- c('A','B','AB','O')
  • 因子转换
my_fac4 <- as.factor(temp_string) #把字符串'A','B','AB','O'转换为因子A AB B O
as.character(my_fac4) #把因子A AB B O转换为字符串'A','B','AB','O'
  • 练习:将x转换为因子和字符串
x <- 1:5
as.factor(x)
as.character(x)
#当不知道有多少因子水平时
nlevels(my_fac4) #返回因子水平数量
levels(my_fac4) #返回所有因子水平
  • 生成参照(哑变量)R语言可以自动生成哑变量
reference
my_fac5 <- relevel(my_fac4, ref = 'B')
#会输出B A AB O,B在第一位说明把B作为参照。不设置时会自动将第一个水平作为参照
x <- c('Placebo','10mg','20mg','50mg')
my_order_fac <- factor(x, ordered = TRUE) # ordered = TRUE认为x已经是有序分类
#这样会输出10mg < 20mg < 50mg < Placebo,而Placebo代表0mg,结果不准确
#①将Placebo写为0mg;②用DescTools函数
library(DescTools)
my_order_fac2 <- reorder.factor(my_order_fac,new.order = x)#代表定义一个新排序

列表

  • 生成列表
my_list <- list(1,2,3,'R','Hello',TRUE,FALSE)
my_list1 <- list(1:10, letters[1:5])
my_list2 <- list(1:10,letters[1:5],list(11:14,LETTERS[1:5]))
  • 提取列表元素
my_list1[[1]] #提取列表中的元素
my_list1[[2]][1] #提取列表中的元素a
my_list2[[3]][[2]][3] #提取列表中的元素C

矩阵

  • 生成矩阵
my_matrix <- matrix(data = 1:6, nrow = 2, byrow = TRUE) 
my_matrix1 <- matrix(data = 1:10, nrow = 5) #生成一个5行共10个元素的矩阵
# byrow = TRUE 表示按行来排列数字,默认状态按列排列数字
my_matrix2 <- matrix(data = 2,nrow = 3,ncol = 4) #生成一个3行4列的矩阵
my_matrix3 <- matrix(data = letters[1:3],nrow = 2,ncol = 4) #2x4=8个元素1:3会警告
  • dimnames给行列命名
my_matrix4 <- matrix(data = 1:12, nrow = 3, ncol = 4, dimnames = list(c('A','B','C'),c('V1','V2','V3','V4')))
  • 转置函数t(x)
t(my_matrix4)
my_matrix5 <- matrix(c(1:5,letters[1:5]),nrow = 2,byrow = TRUE)

数组

  • 生成数组
my_array <- array(data = 1:16,dim = c(2,4,2)) #dim生成两行四列两层的数组
  • dim函数
dim(my_array) #dim可返回数组维度
dim(my_array) <- c(4,2,2) #使用dim函数改变数组维度
  • 分别给数组的行/列/层命名
my_array1 <- array(1:16,dim = c(4,2,2),dimnames = list(c(LETTERS[1:4]),c('col1','col2'),c('first','second')))
my_matrix6 <- matrix(1:8, nrow = 4)
  • 提取矩阵数组的元素
my_matrix6[4,2] #提取元素8,在第4行第2列
my_matrix6[4,] #提取第4行
my_array1[2,2,1] #提取数组1中的元素6[2行,2列,1层]
my_array1[4,,2] #提取数组1第2层中的第4行

注意:提取数据时行、列、层都要按格式和范围写入,缺一或超范围就会报错

数据框(类似Excel)

  • 生成一个数据框
my_df <- data.frame(name = c('Tom','Andy','Marry'),age = c('24','25','26'),height = c('178','176','180'))

注意:变量命名规范 ①数字不能开头。②不可用数字命名。③不可使用运算符命名。文章来源地址https://www.toymoban.com/news/detail-807312.html

  • 查看数据框
dim(my_df) #看数据框格式
View(my_df) #生成表格看格式
nrow(my_df) #看数据框行数
my_df1 <- data.frame(one = c(1.2,2.3,3.4,4.5,5.4),two = LETTERS[1:5],three = c(TRUE,F,T,F,T))
#每个元素要同行数
str(my_df1) #可查看数据框格式

数据框操作

my_df2 <- data.frame(one = c(1.2,2.3,3.4,4.5,5.4),two = c('Tom','Jerry','Amy','Vickie','Mannie'),three = c(TRUE,F,T,F,T),stringsAsFactors = FALSE)
str(my_df2) #stringsAsFactors = FALSE 将因子型改为字符串格式
my_df2[,-2] #去掉第二列two变量
my_df2$two <- NULL #去除第二列two变量
my_df2$four <- LETTERS[1:5] #新增第四列four变量
  • 修改变量
edit(my_df2) #调出编辑框,但注意,edit是一次性的编辑
my_df3 <- edit(my_df2) #赋值后就会存储修改后的
fix(my_df2) #fix函数是永久性操作
  • 实例:鸢尾花
View(iris) #查看表格格式
head(iris,n = 5) #快速查看前部数据结构
tail(iris,n = 5) #快速查看尾部数据结构
library(psych)
describe(iris) #descibe用来查看描述性统计

重新命名

names(iris)
names(iris) <- c('SL','SW','PL','PW','S') 
head(iris)
#为命名兼容中文,需改UTF-8, windows系统下运行以下函数
Sys.setlocale(locale = 'chinese')
names(iris) <- c('用','中','文','命','名') 
head(iris)
my_df4 <- data.frame(one = c(1.2,2.3,3.4,4.5,5.4),two = c('汤姆','杰瑞','艾米','维奇','曼尼'),three = c(TRUE,F,T,F,T))
my_df5 <- data.frame(four = c(1.2,2.3,3.4,4.5,5.4),five = c('汤姆','杰瑞','艾米','维奇','曼尼'),six = c(TRUE,F,T,F,T))

数据框合并&切分

  • cbind按列合并两数据框(要求两数据框有相同数量观测值)
my_df6 <- cbind(my_df4,my_df5) 
my_df7 <- data.frame(one = c(1.2,2.3,3.4),two = c('汤姆','杰瑞','艾米'),three = c(TRUE,F,T))
  • rbind按行合并两数据框(要求两数据框名字相同)
my_df8 <- rbind(my_df4,my_df7) 
  • merge函数(去重合并)
my_df9 <- data.frame(one = c(1.2,2.3,3.4,4.5,5.4),seven = c('汤姆','杰瑞','艾米','维奇','曼尼'),eight = c(TRUE,F,T,F,T))
my_df10 <- merge(my_df4,my_df9)
  • 数据框的切分
set.seed(2022) #设置种子之后,可得到相同的随机数,自定义个起始值2022
iris_sub <- iris[sample(1:nrow(iris),30),] #抽样范围是1:nrow(iris),随机抽30个
  • 用split函数切分提取
iris_sub1 <- split(iris,f = iris$SL) #根据因子SL进行切分?
setosa <- as.data.frame(iris_sub1[2])
head(setosa) #将setosa提取出来(?)
  • 手术刀精细切分提取
iris_sub2 <- iris[iris$S=='setosa',]
head(iris_sub2)
iris_sub3 <- iris[iris$S=='setosa'&iris$SL>4.5,]#S中带setosa行,并且SL中大于4.5
head(iris_sub3)
range(iris_sub3$SL)#输出SL列的极值
iris_sub4 <- iris[iris$S=='setosa'&iris$SL>4.5,1:2]#只要第1、2列
  • 用subset函数切分提取
iris_sub5 <- subset(iris,iris$S=='setosa'&iris$SL>4.5,select = 1:2)
identical(iris_sub4,iris_sub5) #4和5完全一致

到了这里,关于R语言学习笔记1_初级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust 程序设计语言学习——基础语法

    Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。 Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软

    2024年01月22日
    浏览(50)
  • C语言-基础语法学习-1 函数

    当我们需要在C语言中传递一维数组作为函数的形参时,需要了解以下几个关键点: 函数声明和定义:在声明和定义函数时,我们可以使用以下方式指定一维数组作为形参: 或者 这两种方式都允许我们传递一个一维数组作为形参。 数组传递:在C语言中,数组传递实际上是通

    2024年02月12日
    浏览(53)
  • 学习大数据应该掌握哪些基础语言

    大数据技术的体系庞大且复杂,每年都会涌现出大量新的技术,目前大数据行业所涉及到的核心技术主要就是:数据采集、数据存储、数据清洗、数据查询分析和数据可视化。 学习大数据需要掌握什么语言基础? 1、Java基础 大数据框架90%以上都是使用Java开发语言,所以如果

    2024年02月09日
    浏览(42)
  • 前端学习C语言 - 初级指针

    本篇主要介绍: 指针和变量的关系 、指针类型、 指针的运算符 、空指针和野指针、 指针和数组 、 指针和字符串 、const 和指针、以及 gdb 调试段错误 。 指针是一种特殊的变量。存放地址的变量就是指针。 int num = 1; 会申请4个字节的内存来存放数字1,每次访问 num 就是访问

    2024年02月10日
    浏览(42)
  • C语言-基础语法学习-3 二级指针

    当涉及到多级指针时,C语言的灵活性和强大的指针功能可以得到充分的发挥。二级指针是指指向指针的指针,也被称为指向指针的引用。 使用二级指针可以实现以下功能: 动态内存分配:通过二级指针可以动态地分配内存块,并将其地址传递给其他函数或模块进行操作。这

    2024年02月12日
    浏览(44)
  • 嵌入式学习——C语言基础——day10

    1. 指针的基本概念 1.1 地址         用来区别不同内存字节空间的编号 1.2 指针         地址就是指针,指针就是地址,地址是一个编号,指针多了指向的概念 1.3 指针变量         用来存放指针的变量,有时将指针变量简称为指针 2. 指针相关运算符             ——   

    2024年04月27日
    浏览(43)
  • 语言基础篇3——学习第一步,Python环境搭建

    https://www.python.org/downloads/,以Python3.11.5为例: Install for Windows 提供安装程序或者压缩包,安装程序点击下一步即可,压缩包解压即可,注意配置根目录到系统环境变量PATH。 Install for Linux 需要从源码编译,以CentOS7为例: Install for MacOS 提供安装程序,直接安装即可,注意配置环

    2024年02月10日
    浏览(47)
  • 在掌握C#基础上再学习C语言

    C#和C语言虽然名字相似,但它们在很多方面都有很大的区别。 首先,C#是一种面向对象的语言,而C语言是过程化的语言。这意味着C#具有更丰富的语言特性,如类、接口、继承和多态性等,而C语言则更侧重于直接对计算机硬件进行操作,例如对指针的使用。 其次,C#是由微软

    2023年04月08日
    浏览(31)
  • Go语言 -- Web开发基础学习 net/http包

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言最擅长的领域就是Web开发,此贴是本人入门完go语法基础后学习Web开发的学习笔记。 新建go文件hello_world.go 写入: 在命令行运行: go run ./hello_world.go 可以发现控制台输出以下信息 通过上述代码

    2024年02月06日
    浏览(50)
  • 【Java基础学习打卡08】Java语言跨平台原理

    Java语言编程的一大优势便是跨平台,本文将介绍Java语言是如何实现跨平台的。 计算机高级语言按照程序的执行方式可以分为 编译型语言 和 解释型语言 。 编译型语言: 编写的程序源代码需要通过编译器生成机器语言目标文件,在计算机上直接执行目标文件。编译型语言的

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包