新手记录
1.表格在R语言中叫做数据框了
2.?read.table
就是查看和read
命令相关的帮助文档,类推的话,?+任何命令都是查看对应的帮助文档
3.数据类型有向量(Vector)、矩阵(Matrix)、数组(Array)、数据框(Dataframe)、列表(List)。加粗的是重点哦。
元素和向量
1.元素可以是数字或者字符串(与其他编程语言类似),一个元素组成的就叫标量,多个元素组成的就叫向量。同时也因为向量是有序排列的一组元素(此处的有序不一定非得是数学上的逻辑顺序,只要排列了就相当于给了一个特定顺序),所以可以把向量作为数据框的一列。
2.变量赋值昨天有说,今天新了解的是数据框也可以赋值给变量!神奇。
PS:试一下View(x)
,x是变量名,会有新发现。其实在environment里面单击也可以,但是实测Value好像不行,Data可以。
3.在向量中提取元素有两种方法。
一种是按位置:
x[4] #取第四个元素
x[-4] #取除了第四个以外的元素
x[2:4] #取第2~4个元素
x[2:7] #取第2~7个元素(没有了会报错)
x[-(2:4)] #取除了第2~4个元素
x[c(1,5)] #取第一个和第五个元素,个人理解是这个语法只能取一次,所以要完成的话,括号里只能是一个向量,重点在于“一个”
另一种是按值:
x[x==3]#等于3的元素,照葫芦画瓢,两个等号才是等于
x[x<0]#小于0的元素
x[x>1]#大于1的元素
x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素,这个可以有也可以没有,应该都不会报错【没有的话好像会报integer(0)】理解的话同上。
数据框
1.读取本地数据
先把示例数据放到工作目录下,否则会报错。然后调用read命令。read有很多后缀,决定了读取后的数据框格式,这里只是举一例。
read.table(file = "huahua.txt",sep = "\t",header=T)#读取数据,形成数据框
a<-read.table(file = "huahua.txt",sep = "\t",header=T)#把数据框赋值给变量a
sep指的是字段分隔符,每行的值都是由该字符分割的
header指的是数据第一行是否为数据框的第一行(T/F),默认的话基本就是F,这时R会自动给你一个数据框的行标题(V1,V2等等)
2.设置行名列名
X<-read.csv("doudou.txt")#数据框赋值给X
colnames(X)#查看列名
rownames(X)#查看行名,默认值的行名就是行号,1.2.3.4...
colnames(X)[1]<-"bioplanet"#更改第一列列名为bioplanet
X<-read.csv(file="huahua.txt",sep = "",header = T,row.names = 1)#row.names的意思是把第一列当做行名
#这时候我们改的bioplanet就不见了,因为它是原来的第一列的列名,而现在第一列的值都变成了行名,只剩了一列,即原来的第二列
3.数据框导出
write.table(X,file = "yu.txt",sep = ",",quote = F)#把变量X中的数据框导出为新文件,命名为yu.txt,分隔符改为逗号,字符串不加双引号(默认格式带双引号)
4.变量保存与重新加载
save.image(file = "bioinfoplanet.RData")#保存当前所有变量
save(X,file = "test.RData")#保存X变量
load("test.RData")#加载X变量,之前保存在这个文件中
RData是R语言的数据保存格式,退出RStudio之后,就可以在工作目录中看到这几个新变量啦。
5.提取元素
因为现在的变量X是数据框,所以取到的都是数据框里的数据
X[1,2]#第一行第二列
X[2,1]#第二行第一列
X[2,]#第二行全部
X[,]#全部数据
X[,2]#第二列全部
X[1:2]#第一列到第二列
X[c(1,3)]#第一列和第三列
X$X1#这里X1是列名,并且支持自动补全,但是只能提取一列
6.直接使用数据框中的变量(我就是个只会引用的憨憨)
提取某两列作散点图:
(需要提示一下,这里的case和values是两个单纯的列名,没别的意思)
options(stringsAsFactors = T)
a <-data.frame(case=paste0("S",1:9),values=runif(9))
plot(a$case,a$values)
这种方法有个缺点:数据框名a在代码中重复出现
那么如何懒惰地实现:
将数据框名添加到搜索环境中:attach(a)
,作图时就只需输入列名(连$都不用了)。
attach(a)
plot(case,values)
detach(a)#做完后将a删除出搜索环境
局限性:两个以上数据框的列名有冲突时,同时attach会报错。
方法二没看懂就不弄了。
今天就这样啦~