生信星球培训第二十九期

Day5 R数据结构

2019-12-01  本文已影响0人  文婷吖_0df6

设置工作目录

setwd("E:/生信星球 新手7天/Rdata") #灰常重要,将要处理的数据文件也放里面

R数据类型

vector, array, matrix, list, dataframe

向量 Vector

元素、标量、向量

元素(数字、"字符串")--> 标量(1个元素) --> 向量(多个有序元素)

变量赋值

> x <- c(1,2,3)
> x
[1] 1 2 3
> x <- c(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
[11]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10
> x <- rep(1:3,times = 2)
> x
[1] 1 2 3 1 2 3

从向量中提取元素

  1. 根据元素位置
> 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
[11]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> x[4] #第4个元素
[1] 2.5
> x[-4] #去掉第4个元素
[1]  1.0  1.5  2.0  3.0  3.5  4.0  4.5  5.0  5.5  6.0
[11]  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> x1 <- x[-4]  #取值操作并不会改变x,可将上述向量赋值给新变量x1
> x
[1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5
[11]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> x1
[1]  1.0  1.5  2.0  3.0  3.5  4.0  4.5  5.0  5.5  6.0
[11]  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> x[2:4]
[1] 1.5 2.0 2.5
> x[-(2:4)]
[1]  1.0  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0
[11]  7.5  8.0  8.5  9.0  9.5 10.0
> x[c(1,5)] #提取第1和第5个元素
[1] 1 3
  1. 根据值
> 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
[11]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> x[x==10]
[1] 10
> x[x<0]  #这里有问题,不应该返回false吗?
numeric(0)
> x[x %in% c(1.5,2.5,5.5)]  #存在于向量c(1.5,2.5,5.5)中的元素
[1] 1.5 2.5 5.5
> x[x %in% c(1.3,2.3,5.3)]
numeric(0)  #上述问题解决。如果没有提取到元素,会返回数值0

数据框 dataframe

需将数据文件放置在工作目录下

1.读取本地数据框

> setwd("E:/生信星球 新手7天/Rdata")
> X <- read.csv("doudou.txt")
> X
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA

> read.table(file="huahua.txt",sep=" ",header = T)
  X1.X2
1  A\t1
2   B\t
3   C\t
4  D\t3
5   E\t
#介里好像不太对,tab转义字符为"\t"输入试试:
> a <- read.table(file="huahua.txt",sep="\t",header = T)
> a
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
#这时对了

付转义字符表(跟C++相同)


image.png

2.设置行列名

> colnames(X)
[1] "X1" "X2"
> rownames(X)
[1] "1" "2" "3" "4" "5"
> colnames(X)[1] <- "blabla"
> X
  blabla X2
1      A  1
2      B NA
3      C NA
4      D  3
5      E NA
> #有公司返回数据时左上角第一格为空,R会自动补为x,可用此命令修改
> X <- read.csv(file = "huahua.txt",sep = "\t",header = T,row.names = 1)
> X
  X2
A  1
B NA
C NA
D  3
E NA

3.变量保存及重新加载

save.image(file = "ioinfopanet.RData") #保存当前所有变量
save(X,file = ("X.RData")) #保存X变量
load("X.RData") #再次使用R时加载变量

经验:这里如果要保存Rscrip,感觉可以一开始就脚本框输入命令,控制台返回结果好些。避免命令结果都在控制台,不用到最后才复制粘贴,避免出错。

4.提取元素

> X[1,2] #提取X第1行第2列的元素
[1] 1
> X[2,] #提取X第2行向量
  X1 X2
2  B NA
> X[,2]
[1]  1 NA NA  3 NA
> X[2] #也是第2列
  X2
1  1
2 NA
3 NA
4  3
5 NA
> X[1:2] #第1列到第2列
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
> X[c(1)] #提取指定某一列
  X1
1  A
2  B
3  C
4  D
5  E
> X$X2
[1]  1 NA NA  3 NA

help学看帮助文档

help("rep")

Examples
rep(1:4, 2)
rep(1:4, each = 2)       # not the same.
rep(1:4, c(2,2,2,2))     # same as second.
rep(1:4, c(2,1,2,1))
rep(1:4, each = 2, len = 4)    # first 4 only.
rep(1:4, each = 2, len = 10)   # 8 integers plus two recycled 1's.
rep(1:4, each = 2, times = 3)  # length 24, 3 complete replications

rep(1, 40*(1-.8)) # length 7 on most platforms
rep(1, 40*(1-.8)+1e-7) # better

## replicate a list
fred <- list(happy = 1:10, name = "squash")
rep(fred, 5)

# date-time objects
x <- .leap.seconds[1:3]
rep(x, 2)
rep(as.POSIXlt(x), rep(2, 3))

## named factor
x <- factor(LETTERS[1:4]); names(x) <- letters[1:4]
x
rep(x, 2)
rep(x, each = 2)
rep.int(x, 2)  # no names
rep_len(x, 10)
上一篇下一篇

猜你喜欢

热点阅读