R语言基础1

2023-09-11 12:12:50 浏览数 (2)

初识R语言——R语言基础1

R

安装4.3版本

R version 4.3.1

R Studio

新建R project,命名并选择路径。管理工作目录。

新建脚本,书写命令。

重启R语言,Session——restart R.

查询函数的功能:?sqrt()

运行代码:ctrl enter

脚本注释:#

数据类型和向量

数据类型:数值型、字符型、逻辑型。

代码语言:txt复制
==  #判断两个数据相等吗
!=  #判断两个数据不相等吗
class()##判断数据类型

逻辑条件 与&,或|,非!

is族函数,判断数据类型

代码语言:txt复制
is.numeric()
is.logical()
is.character()

as族函数转化数据类型

代码语言:txt复制
as.numeric()
as.logical()
as.character()
##能转换的才能转换

数据结构:

向量、数据框、矩阵、列表

生成向量

代码语言:txt复制
c()
:  ##连续的数字
rep(),seq(),rnorm()
paste0()

Q1:汉字乱码怎么办?

对单个向量进行操作

1,赋值

代码语言:txt复制
x<-c(1,3,5)
x=c(1,3,5)
(x<-c(1,3,5)) #赋值 输出一起实现
x<-c(1,3,5);x  #赋值 输出一起实现

2,简单数学计算

代码语言:txt复制
x 1
log(x)
sqrt(x)

3,根据条件进行判断,生成逻辑值向量

代码语言:txt复制
x>3
x==3

4,初级统计

代码语言:txt复制
max(x)
min(x)
mean(x)
median(x)
var(x)  #方差
sd(x)  #标准差
sum(x) #总和
length(x) #长度
unique(x) #去重复
duplicated(x) #判断重复,对应元素在改集合中是否重复出现,第一次出现不算重复
!duplicated(x) #判断重复
table(x)#元素重复次数统计
sort(x)#从小到大排序
?sort()
sort(x, decreasing=F)
sort(x, decreasing=T)

对两个向量进行操作

1,比较运算,生成等长的逻辑运算

代码语言:txt复制
x=c(1,3,5,1)
y=c(3,2,5,6)
x==y
y==x
###
> x=c(1,3,5,1)
> y=c(3,2)
> x==y
[1] FALSE FALSE FALSE FALSE
###循环补齐

利用循环补齐简化代码

代码语言:txt复制
paste0(rep("x",3),1:3)
paste0("x",1:3)

2,数学计算

代码语言:txt复制
x y

3,连接

代码语言:txt复制
paste(x,y,sep=",")

paste与paste0的区别

代码语言:txt复制
> paste(x,y,sep=",")
[1] "1,3" "3,2" "5,5" "1,6"
> paste0(x,y)
[1] "13" "32" "55" "16"
> paste(x,y)
[1] "1 3" "3 2" "5 5" "1 6"

4,交集、并集、差集

代码语言:txt复制
x=c(1,3,5,1)
y=c(3,2,5,6)
> intersect(x,y) ##交集
[1] 3 5
> union(x,y) ####并集
[1] 1 3 5 2 6
> setdiff(x,y)  ###x与y的补集
[1] 1
> setdiff(y,x) ###y与x的补集
[1] 2 6
#重点
%in%
> x%in%y  #x的每个元素在y中存在吗
[1] FALSE  TRUE  TRUE FALSE
> y%in%x  #y的每个元素在x中存在吗
[1]  TRUE FALSE  TRUE FALSE

x<12
#x[x<12]#从x里面选择大于12的值输出
向量筛选,取子集[]
x[4]
x[2:4]
x[c(1,5)]
x[-4]
x[-c(2:4)]

Tips数据类型转换的优先顺序

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

代码语言:txt复制
> x<-c(8,9,23,5)
> x
[1]  8  9 23  5
> x[4]<-6 ###修改一个元素
> x
[1]  8  9 23  6
> x[c(1,2)]<-c(2,5)
> x
[1]  2  5 23  6

R语言的修改需要赋值,没有赋值就没有发生修改!

简单向量画图

代码语言:txt复制
> k1=rnorm(12);k1
 [1]  0.3984753  0.1087545  0.6005117 -0.3122944  0.1458446
 [6] -1.4176147  0.7168302  0.6837698  1.1993463  1.2120804
[11] -0.2369449  0.4813943
> plot(k1)
###
> ?rep()
> k2=rep(c("a","b","c","d"),each=3);k2
 [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
> k2=rep(c("a","b","c","d"),times=3);k2
 [1] "a" "b" "c" "d" "a" "b" "c" "d" "a" "b" "c" "d"
boxplot(k1~k2)##k1纵坐标;k2横坐标

练习题:

代码语言:txt复制
# 1.生成1到15之间所有偶数
seq(from=2,to=15,by=2)
# 2.生成向量,内容为:"student2"  "student4"  "student6"  "student8"  "student10" "student12"
# "student14" 
# 提示:paste0
paste0(rep("student",times=length(seq(from=2,to=15,by=2))),seq(from=2,to=15,by=2))
paste0(rep("student",times=7),seq(from=2,to=15,by=2))
paste0("student",seq(from=2,to=15,by=2))
# 3.将两种不同类型的数据用c()组合在一起,看输出结果
c(1,"a")
c("a",1)
c(TRUE,"a")
c(TRUE, FALSE, 4)

# 说明:运行load("gands.Rdata"),即可得到和使用我准备的向量g和s,
# 如有报错,说明你的代码写错或project没有正确打开
load("gands.Rdata")

# 4.用函数计算向量g的长度
length(g)

# 5.筛选出向量g中下标为偶数的基因名。
a=seq(from=2,to=100,by=2)
g[a]
###
seq(2,100,2);g[seq(2,100,2)]
# 6.向量g中有多少个元素在向量s中存在(要求用函数计算出具体个数)?将这些元素筛选出来
# 提示:%in%
g%in%s
table(g%in%s)
###
g[g%in%s]
###取交集会去重复,而%in%取子集不会去重复值!

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

# 8.x = 1:10  ;y = c(3:5,11,24)#从全集里面去掉交集
z=union(x,y)
z
r=intersect(x,y)
setdiff(z,r)
###或者
setdiff(union(x,y),intersect(x,y))
x<12
x[x<12]#从x里面选择大于12的值输出

0 人点赞