前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R_basic 01

R_basic 01

原创
作者头像
用户10407321
发布2023-03-23 09:43:42
2920
发布2023-03-23 09:43:42
举报
文章被收录于专栏:R语言基础R语言基础

Part1

1.1数据类型

代码语言:text
复制
 class(1.2)numeric

 is.numeric("4")
#FALSE
 is.logical()
 is.charater()
 as.numeric()
 as.logical()
 as.charater()

1.2向量的生成

代码语言:text
复制
[1] "normal" "normal" "normal"
 seq(from=3,to=21,by=3)
[1]  3  6  9 12 15 18 21
 rnorm(n=3)
[1]  0.1286680 -0.2964153  1.1241529
 #(4)通过组合,产生更为复杂的向量。
 paste0(rep("x",times=3),"_",1:3)  我不想自己数:1:nrow(a)
[1] "x_1" "x_2" "x_3"
!循环补齐思想
paste0("x",1:3)
[1] "x1" "x2" "x3"

1.3初级统计

代码语言:x <- c(1,3,5,1);x
复制
[1] 1 3 5 1
 max(x) #最大值
 min(x) #最小值
 mean(x) #均值
 median(x) #中位数
 var(x) #方差
[1] 3.666667
 sd(x) #标准差
[1] 1.914854
 sum(x) #总和
[1] 10





 length(x) #长度,代表x里面有4个元素
[1] 4
 unique(x) #去重复
[1] 1 3 5
 duplicated(x) #对应元素是否重复   反一下?  !
[1] FALSE FALSE FALSE  TRUE
 table(x) #重复值统计
x
1 3 5 
2 1 1 
 sort(x,decreasing = F)
[1] 1 1 3 5
 

 x = c(1,3,5,6,2)
 y = c(3,2,5)
 intersect(x,y)
[1] 3 5 2
 union(x,y)  #xy里都有
[1] 1 3 5 6 2
 setdiff(x,y)#   x有y没有
[1] 1 6    #如果取不出来会出现charater(0)错是numeric(0),logical(0)
 setdiff(y,x)
numeric(0)
 
 x %in% y #x的每个元素在y中存在吗
[1] FALSE  TRUE  TRUE FALSE  TRUE
 y %in% x #y的每个元素在x中存在吗
[1] TRUE TRUE TRUE

1.4数据转换

代码语言:txt
复制
 c(1,"a") numeric-character    c("1","a")
 c(TRUE,"a") logical-charater    c("TRUE","a")
 c(TRUE,FALSE,4)  loogical-numeric  c(1,0,4)
 

1.5向量筛选的逻辑

代码语言:txt
复制
 x <- 8:12;x
[1]  8  9 10 11 12
 x[x %in% c(9,13)]
[1] 9
 x[2:4]
[1]  9 10 11
 x[c(1,5)]
[1]  8 12
 x[-(2:4)]
[1]  8 12
所以所以[]可以取位置
 x==10
[1] FALSE FALSE  TRUE FALSE FALSE
 x<12
[1]  TRUE  TRUE  TRUE  TRUE FALSE
所以所以[]里可以取逻辑值  
 那[]只能取TRUE,我想取FALSE怎么办?全部()起来取! 
 a
[1]  8  9 10 11 12
 !(a<10)
[1] FALSE FALSE  TRUE  TRUE  TRUE
 a[!(a<10)]
[1] 10 11 12

1.6 简单向量作图

代码语言:txt
复制
 k1 = rnorm(12);k1
 [1]  0.25904416  0.89879597  0.27646147
 [4] -0.04203781 -1.30432461 -0.91516370
 [7] -0.29382152  0.29779891  1.03620847
[10]  0.45334718  0.66758764  2.16318875
 k2 = rep(c("a","b","c","d"),each = 3);k2
 [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d"
[11] "d" "d"
 plot(k1)
 boxplot(k1~k2) #课后试着搜索boxplot表达什么意思

Part2

2.1vector向量

Vector一维 c(1,2,3,4,4) c("A","B","C") c(T,F,F,T,F)

Matrix 二维,矩阵?Matrix 只允许一种数据类型

Data.frame 二维,每列只允许一种数据类型

List :可装万物

代码语言:txt
复制
 str(test)    #好习惯
'data.frame':	15 obs. of  3 variables:
 $ Petal.Length: num  4.6 5.9 4.5 6 4 4.7 1.3 1.4 5.1 5.8 ...
 $ Petal.Width : num  1.5 2.1 1.5 2.5 1.3 1.4 0.2 0.2 1.9 2.2 ...
 $ Species     : chr  "a" "b" "a" "b" ...
 class(test)
[1] "data.frame"


 LETTERS=="M"
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE
 which(LETTERS=="M")
[1] 13


如何筛选score>0的值?
 df1 <- data.frame(gene   = paste0("gene",1:4),
+                  change  = rep(c("up","down"),each = 2),
+                  score   = c(5,3,-2,-4))
 df1
   gene change score
1 gene1     up     5
2 gene2     up     3
3 gene3   down    -2
4 gene4   down    -4
 ## 按条件(逻辑值)
 df1[df1$score>0,]
   gene change score
1 gene1     up     5
2 gene2     up     3
如何筛选score>0的基因?
 df1$gene[df1$score>0]
[1] "gene1" "gene2"
 df1[df1$score>0,1]
[1] "gene1" "gene2"



 #如何取数据框的最后一列?
 df1[,3]
[1]  5  3 -2 -4
 df1[,ncol(df1)]
[1]  5  3 -2 -4
 #如何取数据框除了最后一列以外的其他列?
 df1[,-ncol(df1)]
   gene change
1 gene1     up
2 gene2     up
3 gene3   down
4 gene4   down


如何修改行名列名?
 #改行名和列名
 rownames(df1) <- c("r1","r2","r3","r4")
 #只修改某一行/列的名
 colnames(df1)[2] <- "CHANGE"



如何连接两个数据框?
 merge(test1,test3,by.x = "name",by.y = "NAME")
 merge(test1,test3,by.x = "name",by.y = "NAME",all.x = T)
 merge(test1,test3,by.x = "name",by.y = "NAME",all.y  = T)
 merge(test1,test3,by.x = "name",by.y = "NAME",all=T)
    name blood_type weight
1  Damon          O    140
2  jimmy          A    145
3 nicker          B    110
4 Sophie         AB     NA
5   tony       <NA>    138


Matrix
 m <- matrix(1:9, nrow = 3)
 colnames(m) <- c("a","b","c") #加列名
 m
     a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
 t(m)
  [,1] [,2] [,3]
a    1    2    3
b    4    5    6
c    7    8    9
 as.data.frame(m)
  a b c
1 1 4 7
2 2 5 8
3 3 6 9
 m
     a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9


Matrix取子集
 l <- list(m1=matrix(1:9,nrow = 3),
+           m2=matrix(2:9,nrow = 2))
 l
$m1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
$m2
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]    3    5    7    9
 l$m2
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]    3    5    7    9

vector添加名字
 scores <- c(100,59,73,95,450)
 names(scores) <- c("a","b","c","d","e")
 scores
  a   b   c   d   e 
100  59  73  95 450 
 scores[c("a","c")]
  a   c 
100  73 
那我就可以通过scores选小孩了
 names(scores)[scores>60]
[1] "a" "c" "d" "e"

Part3

代码语言:txt
复制
 plot(rnorm(10))
 plot(seq(2,80,4))
 plot(iris[,1])
只要前面是numeric就可以画

 plot(iris[,1],col = iris[,5])
 plot(iris[,2],col = iris[,5])
 plot(iris[,3],col = iris[,5])
 plot(iris[,4],col = iris[,5])
根据第五列改颜色

 jimmy <- function(i){
+   plot(iris[,i],col=iris[,5])
+ }
 jimmy(1)
 jimmy(2)
 jimmy(3)
 jimmy(4)

Part4

代码语言:txt
复制
R包安装
	options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
	options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
	install.packages()
	biocmanager::install()
	devtools::install_github()

	R包经常提示Update all/some/none?        update=F,ask=F
2.网络限制了你的进步:
	
	
	
	满分操作:
	!require(stringr)
[1] FALSE
	If(!require(stringr))install.packages("stringr")
	 #require可以转换为逻辑值,加载成功是T,失败是F
	  
	 as.logical(require(stringr))   
[1] TRUE


3.列出包里有哪些函数
	 library(tidyr)
 ls("package:tidyr")
 [1] "%>%"                      "all_of"                  
 [3] "any_of"                   "as_tibble"  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part1
    • 1.1数据类型
      • 1.2向量的生成
        • 1.3初级统计
          • 1.4数据转换
            • 1.5向量筛选的逻辑
              • 1.6 简单向量作图
              • Part2
                • 2.1vector向量
                • Part3
                • Part4
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档