元素,标量,向量的概念
- 元素:数字,字符串等
- 标量:一个元素组成的变量
- 向量:有序的多个元素组成的变量
一些变量赋值的方式
- seq()的使用
#产生11个从0-1的数字
seq(0, 1, length.out = 11)
#从1-9产生相差为2的数字
seq(1, 9, by = 2)
#从1-9产生相差为pi的数字
seq(1, 9, by = pi)
#从1-6产生相差为3的数字
seq(1, 6, by = 3)
#从1.575-5.125产生相差为0.05的数字
seq(1.575, 5.125, by = 0.05)
#相当于x <- 1:17
seq(17)
#运行结果
> seq(0, 1, length.out = 11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> seq(1, 9, by = 2)
[1] 1 3 5 7 9
> seq(1, 9, by = pi)
[1] 1.000000 4.141593 7.283185
> seq(1, 6, by = 3)
[1] 1 4
> seq(1.575, 5.125, by = 0.05)
[1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025
[11] 2.075 2.125 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525
[21] 2.575 2.625 2.675 2.725 2.775 2.825 2.875 2.925 2.975 3.025
[31] 3.075 3.125 3.175 3.225 3.275 3.325 3.375 3.425 3.475 3.525
[41] 3.575 3.625 3.675 3.725 3.775 3.825 3.875 3.925 3.975 4.025
[51] 4.075 4.125 4.175 4.225 4.275 4.325 4.375 4.425 4.475 4.525
[61] 4.575 4.625 4.675 4.725 4.775 4.825 4.875 4.925 4.975 5.025
[71] 5.075 5.125
- rep()的使用
#重复产生1-4的数字,2次
rep(1:4, 2)
#1-4的数字,每个数字重复两次
rep(1:4, each = 2)
#1-4的数字,指定每个数字的重复次数
rep(1:4, c(2,2,2,2))
rep(1:4, c(2,1,2,1))
#从1-4产生数字,每个数字重复2次,总共产生数字长度为4
rep(1:4, each = 2, len = 4)
#len>8····(2*4),此时从头开始继续重复输出
rep(1:4, each = 2, len = 10)
#1-4的数字,每个数字重复2次,该数字排列整体重复3次
rep(1:4, each = 2, times = 3)
#运行结果
> rep(1:4, 2)
[1] 1 2 3 4 1 2 3 4
> rep(1:4, each = 2)
[1] 1 1 2 2 3 3 4 4
> rep(1:4, c(2,2,2,2))
[1] 1 1 2 2 3 3 4 4
> rep(1:4, c(2,1,2,1))
[1] 1 1 2 3 3 4
> rep(1:4, each = 2, len = 4)
[1] 1 1 2 2
> rep(1:4, each = 2, len = 10)
[1] 1 1 2 2 3 3 4 4 1 1
> rep(1:4, each = 2, times = 3)
[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
从向量中提取元素
- 按值提取
#x中等于5的数字
x[x==5]
x[x<=6]
#输出x中属于(1,3,5,7,9)中的数字
x[x %in% c(1,3,5,7,9)]
#运行结果
> x[x==5]
[1] 5
> x[x<=6]
[1] 1 2 3 4 5 6
> x[x %in% c(1,3,5,7,9)]
[1] 1 3 5 7 9
- 按元素位置提取
x <- 1:10
#输出第四个元素
x[4]
#“-”表示除去该元素的输出
x[-4]
x[2:4]
x[-(2:4)]
x[c(1,3,5)]
#运行结果
> x <- 1:10
> x[4]
[1] 4
> x[-4]
[1] 1 2 3 5 6 7 8 9 10
> x[2:4]
[1] 2 3 4
> x[-(2:4)]
[1] 1 5 6 7 8 9 10
> x[c(1,3,5)]
[1] 1 3 5
数据框
- 读取本地数据
#sep="\t"表示以Tab为分隔符
#header = T表示文件数据带表头
read.table(file="huahua.txt",sep="\t",header=T) read.table(file="doudou.txt",sep=",",header =T)
#运行结果
> read.table(file="huahua.txt",sep="\t",header=T)
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> read.table(file="doudou.txt",sep=",",header =T)
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
- 修改行名/列名
#读取文件
x <- read.csv("doudou.txt")
#查看列名
colnames(x)
#查看行名
rownames(x)
#j将第一列列名更改为bioplanet
colnames(x)[1]<-"bioplanet"
#查看更改后的列名
colnames(x)
————————————————————————————————————
#运行结果
————————————————————————————————————
> x <- read.csv("doudou.txt")
> colnames(x)
[1] "X1" "X2"
> rownames(x)
[1] "1" "2" "3" "4" "5"
> colnames(x)[1]<-"bioplanet"
> colnames(x)
[1] "bioplanet" "X2"
#读入文件
x<-read.csv("doudou.txt")
#输出x
x
#将文件第一列作为行名
x<-read.csv(file="doudou.txt",sep=",",header =T,row.names=1)
x
——————————————————————————————————————————————————————————————————————
#运行结果
——————————————————————————————————————————————————————————————————————
x<-read.csv("doudou.txt")
> x
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> x<-read.csv(file="doudou.txt",sep=",",header =T,row.names=1)
> x
X2
A 1
B NA
C NA
D 3
E NA
- 数据框的导出
#quote=F表示输出的char或factor不用""引住;quote=T则使用""
write.table(x,file="yu.txt",sep=",",quote=F)
- 提取元素
x<-read.table(file="doudou.txt",sep=",",header=T)
x[1,2]
x[1,]
x[,2]
x[2]
x[1:2]
x[c(1,2)]
x$X2
#运行结果
> x<-read.table(file="doudou.txt",sep=",",header=T)
> x[1,2]
[1] 1
> x[1,]
X1 X2
1 A 1
> x[,2]
[1] 1 NA NA 3 NA
> x[2]
X2
1 1
2 NA
3 NA
4 3
5 NA
> x[1:2]
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> x[c(1,2)]
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> x$X2
[1] 1 NA NA 3 NA
- 变量的保存与重新加载 RData
#保存当前全部变量
save.image(file="bioinfoplanet.RData")
#保存变量x
save(x,file="test.RData")
#重新加载命令
load("test.RData")
#运行结果
> x<-1:10
> save(x,file="test.RData")
> load("test.RData")
> x
[1] 1 2 3 4 5 6 7 8 9 10
【选修】直接使用数据框中的变量--提取某两列作散点图
#环境设置函数,设置数据框的读取方式,将String读取为Factor
options(stringsAsFactors = T)
#paste0("S",1:9)将S与1-9的数字连接起来形成字符
a <-data.frame(case=paste0("S",1:9),values=runif(9))
plot(a$case,a$values)
- 省力实现,避免反复输入a
- attach
attach(a)
plot(case,values)
- with
with函数使得{}里的操作都在数据框中进行
with(a,{ plot(case,values)
#<<x作为全局变量
x<<-summary(values)
})
x
#x输出结果
#最小值Min,四分位数Qu,中位数Median,平均值Mean,最大值Max
> x
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.1068 0.3873 0.4103 0.4747 0.6760 0.8566