前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-learn)Day1+Day2

R-learn)Day1+Day2

原创
作者头像
用户11184134
发布2024-06-28 17:51:29
610
发布2024-06-28 17:51:29
举报
文章被收录于专栏:R笔记R笔记

title: "Day-1+2"

author: "lyl"

date: "2024-06-27"

output: html_document


代码语言:{r setup, include=FALSE}
复制
knitr::opts_chunk$set(echo = TRUE,message=F,warning=F)

课前准备

代码语言:{r}
复制
#两个电脑共享屏幕
# > :R语言的命令提示符
# 新建项目project:file-New project-New Directory-New project-设置名称及位置-Create Project 
#新建脚本:File-New File--R Script
#展示所有面板:View--Panes--Show ALL Panes
#字号设置:Tools--Global Options--Appearance--Editor Font size --Apply
#重启R语言:Session--Restart session
#小括号前()的字母/单词一定是函数
#脚本文件保存时,会在文件名后面加上一个.R(起名不要加.)
#脚本、图片、文件的默认保存位置,也是文件读取的默认位置,都在一个工作目录(working directory)下,也就是同一个文件夹下
#为方便管理工作目录,推荐从project进入R语言,不推荐从.R(脚本)进去R,否则需要管理工作目录
#error:检查命令/环境/修改代码
#warring:忽略
#卡住了:中止(点击红色键)或重启session
#出现”+“:表示命令不完整,需要补全或ESC键退出
#出现提示信息:没有关键词(error)就是不关键
#进一步选择:一定要回答,不回答就不过去,一般no

分割#数据类型:numeric数值型:1.3 4 7.3 # character字符型:"s" "3" "dvd sd" #(一定需要引号) # logical逻辑值:TRUE=T FALSE=F NA #判断数据类型的函数:class(),将要判断的内容写在括号里

逻辑型数据

代码语言:{r}
复制
#比较运算的结果是逻辑值,比较运算是返回逻辑值的方法之一,还有别的。
#比较运算符号:>, <, <=, >=, ==, !=
3==4
3!=4
# 逻辑运算:多个逻辑条件连接:与&、或|
3<5&4>5   
3<5|4>5  
#非!!:表否定,专门给逻辑值用
!(4>5)
#is族函数,判断,返回值为TRUE或FALSE  判断是不是,而不是判断是什么
# is.numeric()    是否数值型数据
# is.logical()    是否逻辑型数据
# is.character()  是否字符型数据
is.numeric("a")  
is.character("a") 
is.numeric("4")  
is.character(TRUE) 
is.logical(TRUE) 
#as族函数实现数据类型之间的转换
# as.numeric()    将其他数据转换为数值型
# as.logical()    将其他数据转换为否逻辑型
# as.character()  将其他数据转换为字符型
as.numeric("jimmy")
as.character(4) 
as.numeric("4") 
#多个数据如何组织?
# 数据结构:向量、数据框、矩阵、列表

向量的生成

代码语言:{r}
复制
#法1:用c()逐一放在一起
c(2,5,6,2,9)  #数值型数据
c("a","d","f","s")  #字符型数据
#法2:连续的数字用冒号":"
1:5
#法3:有重复的用rep(),有规律的序列用seq(),随机数用rnorm
rep("x",times=3)#"x"重复三次
seq(from=3,to=21,by=3) #从3到21 间隔3取一个数
rnorm(n=3) #从一组正态分布的数字取出三个
#法4:通过组合产生更为复杂的向量
paste0(rep("x",times=3),1:3) #两个向量合成一个向量

常见错误

代码语言:{r}
复制
#引号、拼写(函数)错误、大小写
#不能使用中文字符
#当出现unexpected时,说明代码写错
#找不到函数则函数有问题,找不到对象说明对象有问题,没有提前对对象赋值或者没有加引号
#脚本打开遇到乱码:解决方案:File--Reopen with Encoding--UTF-8--ok

小知识

代码语言:{r}
复制
#object:对象/变量
#function:函数
#Taq键+上下键:补齐函数、文件名等等。。
#大于号后,使用上下键,可翻动前面的代码,直接修改代码,节省时间
#格式大于内容
  #数据框与等于“表格”:每一列需要为同一种数据类型,他不是文件,
  #数据框单独拿出来的一列是向量,视为一个整体
  #一个向量只能有一种数据类型
#paste与paste0的区别

##Day1-练习题

代码语言:{r}
复制
# 2.生成向量,内容为:"student2"  "student4"  "student6"  "student8"  "student10" "student12"
# "student14" 
# 提示:paste0
paste0(rep("student",times=7),seq(from=2,to=15,by=2)) #我的答案,但是times=7是看题目数出来的,是个笨方法,还易错不智能
a=seq(from=2,to=15,by=2) #先赋值
paste0(rep("student",times=length(a)),a) #使用length函数

##Day2-笔记

代码语言:{r}
复制
#逻辑运算符号同样适用于向量
#向量的组成单位为元素
#数据类型转换的优先顺序:逻辑可变字符,逻辑可变数值,数值可变字符,也就是说:逻辑和数值都可以变成字符,逻辑也可转变为数值。
c(1,"a")
c(TRUE,"a")
c(TRUE,FALSE,1)

对当个向量进行操作

代码语言:{r}
复制
#(1)赋值
x<- c(1,3,5,7)#<-规范的赋值符号
x= c(1,3,5,7)#=随意的写法
# 赋值和输出一起实现
(x<- c(1,3,5,7)) #加括号
x<- c(1,3,5,7);x #两句代码使用;分开代码 则可以同时运行
#(2)对单个向量进行操作
x+1
log(x)
# (3)比较运算
x>3  #1,3,5,7逐一跟3比较
x==3   ## ==为比较运算;=为赋值
#(4)初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
# 重要的函数 
length(x) #长度  数向量里元素的个数
unique(x) #去重复 重复的元素去掉,第二次第多次出现的去掉
duplicated(x) #对应元素是否重复返回逻辑值
table(x) #重复值统计 向量中各取值出现次数统计
sort(x) #排序,默认从小到大排序
sort(x,decreasing = F)
sort(x,decreasing = T)

对两个向量进行操作

代码语言:{r}
复制
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)比较运算,生成等长的逻辑向
x == y # 注意是一一对应比较,1跟3比,3跟2比,5跟5比,1跟6比
y == x #写法不同,但是逻辑以及结果与x == y等同
#(2) 数字计算
x + y #也是一一对应相加
#(3)连接
paste(x,y,sep=",") #连接xy,但是需要使用,进行连接 
#当等位运算时,两个向量长度不一致时,短向量发生循环补齐至与长向量一直的长度,返回来的逻辑值数量与长向量一致。但是会出现warning提示。
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y # 啊!warning!
#(4)交集、并集、差集  不管出现多少次,都会去重哦
intersect(x,y) #交集
union(x,y) # x、y的并集
setdiff(x,y)  #差集,x有y无
setdiff(y,x)  #差集,y有x无

重点

代码语言:{r}
复制
# %in% 前后位置很重要,对调之后意义不同
x = c(1,3,5,1)
y = c(3,2,5,6)
x %in% y #x的每个元素在y中存在吗,返回的逻辑值长度与x长度一致
y %in% x #y的每个元素在x中存在吗,返回的逻辑值长度与y长度一致
#x==y和x%in%y的区别
x==y #x与对应位置的y相等吗
x%in%y #x的每个元素在y中存在吗?

向量筛选取子集

代码语言:{r}
复制
#取子集专用中括号:[]:将TRUE对应的值挑选出来,FALSE丢弃。
x <- 8:12
#根据逻辑值取子集
x[x == 10] #[]外面是需要筛选的向量,里面是逻辑值,返回与x长度相同,且一一对应的逻辑值向量,取逻辑值为TRUE的值
x[x < 12] 
x[x %in% c(9,13)]
#根据位置取子集
x[4] #取出x的第四个元素
x[2:4] #取出x的第2-4个元素
x[c(1,5)] #取出x的第1、5个元素
x[-4] #取出x的除第4个元素外的元素
x[-(2:4)] #取出x的除第2-4个外的其他元素
# 按照逻辑值:中括号里是与x等长且意义对应的逻辑值向量
# 按照位置:中括号里是由x的下标组成的向量,是向量哦

##如何修改向量中的某个/某些元素

代码语言:{r}
复制
x=c(8,9,10,11,12);x
##改一个元素
x[4] <- 40;x
#改多个元素
x[c(1,5)] <- c(80,20);x
#改了但没被R所记录,重要思想:R语言的修改,都要赋值,没有赋值就没有发生
# 所以以上改为:
x=c(8,9,10,11,12);x
##改一个元素
x=x[4] <- 40;x
#改多个元素
x=x[c(1,5)] <- c(80,20);x

简单向量作图

代码语言:{r}
复制
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)

小知识

代码语言:{r}
复制
#编程语言里,空格和减号-都是特殊字符,不要随意使用,建议使用下划线_
#向量的组成部分是元素,长度(length)是数元素的个数
#不同的函数存在“默认思想”
#英文?+函数名可以查找函数的帮助文档
?sort
# 能用函数千万不要手动去数,姐妹们呀
#paste与paste0的区别
x = c(1,3,5,1)
y = c(3,2,5,6)
paste(x,y) #默认空格连接
paste0(x,y) #默认直接连接
paste(x,y,sep = "") #不使用默认值,没有空格直接连接
#等位运算:比较运算、数学计算、连接。即:向量中的元素一对一的进行计算
#循环补齐发生的条件:1.等位运算(两个向量,元素与元素之间一对一的计算);2.两个向量长度不相等。最终产生多少个逻辑值还需要要长向量的长度
#取子集专用中括号:[]:将TRUE对应的值挑选出来,FALSE丢弃。
#R特有的变量保存格式:Rdata 
#用处:存储有用的变量,准备下一次使用
#save(g,s,file="gands.Rdata") #将g和s两个变量存储到gands.Rdata中
#load("gands.Rdata") #加载gands.Rdata,让里面存储的变量出现在环境中

练习题

代码语言:{r}
复制
# 练习2-4
# 说明:运行load("gands.Rdata"),即可得到和使用我准备的向量g和s,
# 如有报错,说明你的代码写错或project没有正确打开
# 1.用函数计算向量g的长度
#length(g)

# 2.筛选出向量g中下标为偶数的基因名。
# g[seq(2,100,2)] #根据下标筛选

# 3.向量g中有多少个元素在向量s中存在(要求用函数计算出具体个数)?将这些元素筛选出来# 提示:%in%
#table(g%in%s) 或sum(g%in%s)

# 4.生成10个随机数: rnorm(n=10,mean=0,sd=18),用向量取子集的方法,取出其中小于-2的值

引自生信技能树

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

代码语言:{r}
复制

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

代码语言:{r cars}
复制
summary(cars)

Including Plots

You can also embed plots, for example:

代码语言:{r pressure, echo=FALSE}
复制
plot(pressure)

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 课前准备
  • 逻辑型数据
  • 向量的生成
  • 常见错误
  • 小知识
  • 对当个向量进行操作
  • 对两个向量进行操作
  • 重点
  • 向量筛选取子集
  • 简单向量作图
  • 小知识
  • 练习题
  • Including Plots
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档