2020-04-21
今天的内容:
- 标量和变量
> x<-c(1,2,3)
> x
[1] 1 2 3
> x<-1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x<-seq(1,10,by = 0.5)
> x
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0
> x<-rep(1:3,times=2)
> x
[1] 1 2 3 1 2 3
- 从向量中提取元素
2.1 根据元素位置
> x[4]
[1] 1
> x[-4]
[1] 1 2 3 2 3
> x[2:4]
[1] 2 3 1
> x[-2:4] #R的代码都是带括号的,括号必须是英文的。
Error in x[-2:4] : only 0's may be mixed with negative subscripts
> x[-(2:4)]
[1] 1 2 3
> x[-(2)&-(4)] #不理解啥意思,难道不是:排除第2及第4后的元素吗?
[1] 1 2 3 1 2 3
> x[c(2,4)]
[1] 2 1
> x[c(2:4)]
[1] 2 3 1
>
2.2 根据值
> x==10 #x=10的元素
[1] FALSE FALSE FALSE FALSE FALSE FALSE
> x==1
[1] TRUE FALSE FALSE TRUE FALSE FALSE
> x<2
[1] TRUE FALSE FALSE TRUE FALSE FALSE
-
数据框
3.1 读取本地数据
上传数据到newbee.Rproj所在目录:
> 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
3.2 设置行名、列名
> X<-read.csv("doudou.txt")
> col(X)
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
[4,] 1 2
[5,] 1 2
> colnames(X)
[1] "X1" "X2"
> rownames(X)
[1] "1" "2" "3" "4" "5"
> colnames(X)[1]<-"bioplanet" #命名第一列
> X
bioplanet X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1) #row.names的意思是修改第一列为行名
3.3 数据框的导出
> write.table(X,file="yu.txt",sep = ",",quote = F) #分隔符改为逗号,字符串不加双引号(默认格式带由双引号)
3.4 变量的保存与重新加载
> save.image(file="bioinfoplanet.RData")#保存当前所有变量
> save(X,file="test.RData")#保存其中一个变量
> load("test.RData")#再次使用RData时的加载命令
3.5 提取变量
X[x,y]#第x行第y列
X[x,]#第x行
X[,y]#第y列
X[y] #也是第y列
X[a:b]#第a列到第b列
X[c(a,b)]#第a列和第b列
X$列名#也可以提取列(优秀写法,而且这个命令还优秀到不用写括号的地步,并且支持Tab自动补全哦,不过只能提取一列)
> X
X2
A 1
B NA
C NA
D 3
E NA
> X[2,2]
NULL
> X[2,1]
[1] NA
> X[1,1]
[1] 1
> X[4,]
[1] 3
> X[,1]
[1] 1 NA NA 3 NA
> X[,0]
data frame with 0 columns and 5 rows
> X[1]
X2
A 1
B NA
C NA
D 3
E NA
> X$X2 #列名
[1] 1 NA NA 3 NA
3.6 直接使用数据框中的变量
a <-data.frame(case=paste("S",1:50),values=runif(50))
plot(a)
plot(a$case,a$values) #发现x y轴名改变了
- 1:
attach
将数据框名添加到搜索环境中:attach(a),作图时就只需输入列名(连$都不用了)。
attach(a)
plot(case,values)
做完后将a删除出搜索环境 detach(a)
局限性:两个以上数据框的列名有冲突时,同时attach会报错。
- 2:
with
with(a,{
plot(case,values)
x<<-summary(values) #求和并赋值给x,<<的意思是作为全局变量,也就是出了大括号仍有效。
})
x #运行完后打印x
3.7 思考题
save(X,file="test.RData")这句代码如果报错X not found,是为什么,应该怎么解决?
可能的原因:X不存在?此时应该检查X的变量名称是否正确?或者工作的目录变化了?其实我不知道原因……