R语言学习笔记-Day 2

2024-07-02 22:47:27 浏览数 (2)

r

1 TRUE

as.character("a")

1 "a"

as.logical(TRUE)

1 TRUE

as.character(4)

1 "4"

c(2,3,5,6,9)

1 2 3 5 6 9

c("a","f","k")

1 "a" "f" "k"

1:5

1 1 2 3 4 5

rep("x",time=3)

1 "x" "x" "x"

seq(from=3,to=21,by=3)

1 3 6 9 12 15 18 21

rnorm(n=3)

1 -0.33499193 0.01844176 0.87598682

paste0(rep("x",times=3),1:3)

1 "x1" "x2" "x3"

paste0(rep("x",times=3),1:3,rep("a",time=3))

1 "x1a" "x2a" "x3a"

x<-c(1,3,5,1)

x

1 1 3 5 1

x <- c(2,3,6,5);x

1 2 3 6 5

#以下为练习题

#生成1-15之间所有偶数

seq(from=2,to=15,by=2)

1 2 4 6 8 10 12 14

#生成向量,内容为:“student2/4/6/8/10/12/14”

paste0(rep("student",times=7),seq(from=2,to=14,by=2))

1 "student2" "student4" "student6" "student8" "student10" "student12" "student14"

b <- seq(from=2,to=14,by=2);paste0(rep("student",times=length(b)),b)

1 "student2" "student4" "student6" "student8" "student10" "student12" "student14"

#将两种不同类型的数据用c()组合在一起,看输出结果。

y <- c(1,2,3,"a","c","e");y

1 "1" "2" "3" "a" "c" "e"

x <- c("a","b","c",TRUE,FALSE);x

1 "a" "b" "c" "TRUE" "FALSE"

z <- c(1,2,3,4,TRUE,FALSE);z

1 1 2 3 4 1 0

A <- c(1,2,3,4,TRUE,FALSE);A

1 1 2 3 4 1 0

a <- c(1,0,1,TRUE,FALSE);a

1 1 0 1 1 0

#字符型 数值型/逻辑型=字符型;数值型 逻辑型=数值型(TRUE=1,FALSE=0,NULL=空,NA=NA);转换原则:尽可能保留内容。

k1 <- rnorm(12);k1

1 1.1634622 -0.1284445 0.4145822 -0.1347036 0.1559240 -1.8345503 -0.4332640 0.2029306 -0.1146037 0.9133085 -2.0834287

12 2.6023179

plot(k1)

k2 <- rep(c("a","b","c","d"),each=3);k2

1 "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"

boxplot(k1~k2)

*补充信息

并非所有NA都是逻辑型。

*数据类型的判断和转换

is族函数,判断,返回值为TRUE或FALSE

is.numeric(4) - TRUE

is.character(a) - FALSE

is.logical()

格式和内容都很重要

as族函数实现数据类型之间的转换

as.numeric/logical/character():将数据转换为数字/逻辑/字符型

*多个数据如何组织?

数据结构:向量<数据框<矩阵<列表

数据框约等于“表格”,列有要求,每行只能有一种数据类型;不是文件

数据框单独拿出的一列为向量,视为一个整体。

一个向量只能由一种数据类型。

乱码解决方法:HELP-Reopen with encoding-UTF-8

向量的生成:

(1) 用c()逐一放到一起。

(2) 连续的数字用“:”

(3) 有重复的用rep();有规律的序列用seq();随机数用rnorm()。(小数点后默认显示八位)

(4) 通过组产生更为复杂的向量。paste0(rep("x",times=3),1:3)

对单个向量进行的操作

(1) 赋值:x<- c(1,3,5,1)#规范的赋值符号

“=”可以替代“>-”#随意的写法

(x <- c(1,3,5,1))#赋值和输出一同实现

标准:x <- c(1,3,5,1);x

x为变量名,可用:大小写字母(但不建议用c);字母 数字可以,数字 字母报错;“_”“.”可用,“ ”“-”为特殊字符,不被允许;不可用中文做变量名称

两句或多句代码写在同一行使用“;”

(2) 简单数值计算:x 1/log(x)/sqrt(x)

(3) 比较运算,生成逻辑值向量:x>3/x==3

(4) 初级统计:

max(x) #最大值

min(x) #最小值

mean(x) #平均值

median(x) #中位数

var(x) #方差

sd(x) #标准差

sum(x) #求和

length(x) #向量长度(元素个数)

unique(x) #去掉重复元素(仅保留一个)

duplicated(x) #判断是否发生重复(仅在第一次发生重复时输出TRUE)

table(x) #重复值统计(即存在哪些取值,各出现几次)

sort(x) #对向量内元素进行排序(默认升序;?sort查看帮助文档,默认值写在USAGE中)

sort(x,decreasing = T) #降序排列

#paste0()函数输出值跟随最大数字

对两个向量进行的操作(一一对应(长度一致时))

(1) 比较运算,生成等长的逻辑向量。e.g.x=c(1,3,5,1);y=c(3,2,5,6);x==y 1 F F T F

(2) 数学计算 x y 1 4 5 10 7

(3) 连接 paste(x,y,sep=",") 1 1,3 3,2 5,5 1,6

#paste0(x,y) = paste(x,y,sep="")

当长度不一致,且发生等位运算时,较短向量元素发生循环补齐。

(4) 交集、并集、差集

intersect(x,y) 1 3 5

union(x,y) 1 1 3 5 2 6

setdiff(x,y) 1 1 #存在于x中而不在y中

setdiff(y,x) 1 2 6

重点:%in% 没有快捷键(非对应比较)

x %in% y #x的每个元素在y中存在吗

y %in% x #y中的每个元素在x中存在吗

向量筛选(取子集)

x <- 8:12;xx==10 10

xx<12 8 9 10 11

xx%in%c(9:12) 9 10 11 12

#以上均根据逻辑值筛选

#按位置筛选:

x4 11

x2:4 9 10 11

xc(1,5) 8 12 #x1,5 会报错,“[]”中需为向量

x-(2:4) 8 12 #“-”为反选,即去除所选部分

按照逻辑值:与x等长的且一一对应的以逻辑值组成的向量;

按照位置:由x下标所组成的向量

修改向量中某个元素

x4 <- 40 #改一个元素

xc(1,5) <- c(80,20) #改多个元素

#R语言里所有修改都需要赋值,没有赋值就没有发生

删掉某一个变量:rm(x)

向量的作图

k1 <- rnorm(12);k1

plot(k1) #k1作为纵坐标(点图)

k2 <- rep(c("a","b","c","d"),each=3);k2

1 "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"

boxplot(k1~k2) #k1作纵坐标,k2作横坐标,自动生成中位数(箱线图)

向量(Vector)——一维

数据框(“表格”)——二维:matrix:矩阵,二维,只允许一种数据类型;data.frame:数据框,二维,每列只允许一种数据类型

列表(list)

判断数据结构:(1)根据生成的函数判断;(2)利用class或is函数判断。

#Rdata的保存

save(g,s,file="gands.Rdata") #将变量g,s储存到gands.Rdata中

load("gands.Rdata") #调用变量g,s

#numeric:double, integer

typeof(x) #返回原函数

x = c(1L,2L,4L,5L) #也可生成整数列

引用自生信技能树

0 人点赞