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

R语言-基础

原创
作者头像
用户10331357
修改2023-05-05 22:32:35
1.4K0
修改2023-05-05 22:32:35
举报
文章被收录于专栏:阿涛的生信入门笔记

一. R的使用

  1. 在Rstudioy中新建项目(R project) File-New Project-New Directory-New Project-Directory name-Creat Project (文件中不要有中文和字符)
  2. 新建脚本 (Ctr+shift+N)
  3. 更改字号 (Tools-Global options-Apearance-Editor font size)
  4. 重启 session-restart R (Ctr+shift+F10)
  5. 工作目录(working directory)默认在 .Rproject文件夹下
  6. 打开文件时,双击打开 .Rproject 即可打开RStudio,打开后工作目录自动设置好了
  7. R界面文字放大 “control” + “shift” + “+” R界面文字缩小 “control” + “-”

二.报错

  1. 报错: Error 。 解决:检查命令,检查环境,修正后重新运行
  2. 结果出错时(Error),只看最后一个冒号的后半句
  3. 解决报错信息的两大思路,1. 检查代码有没有问题,2. 看报错信息关键词
  4. 错误(Error) Error:后出现unexpected...代表代码写错啦!
  5. 错误(Error) could not found function... 代表函数写错了或者还没有加载这个函数,function就是函数
  6. 错误(Error) object..not found 没有对象,代表函数写错了(忘加" "等 ) 错误(Error): no such file or directory #可能是工作目录不对,找不到这个文件
  7. Tab键自动补齐代码
  8. 上下键可翻动,在控制台上,光标放在 > 后面,按上键,即可修改上一条命令重新运行

操作中的常见错误

代码语言:javascript
复制
class(a)   # 字符型加" "
Error: object 'a' not found
> calss("a")  # class写错了
Error in calss("a") : could not find function "calss"
> class(true)  # true写大写
Error: object 'true' not found
> class(TURE) # TURE写错了
Error: object 'TURE' not found
> class(TRUE)# 括号是中文的,是错误的!
Error: unexpected input in "class("

note

  1. Warning 忽略,后面有报错或意外结果在检查
  2. > 代表已经运行运行完成
  3. 太长时间卡住不动,中止(红色键)或重启 (三个等级的重启: 重启session ,重启RStudio , 重启电脑)
  4. 出 “+” , 代表命令不完整,补全或ESC退出
  5. a/s/n :图省事回答n, (但被问问题了,不能不理)

三.数据类型与数据结构

查看字符型、逻辑型和数值型向量的方式

代码语言:javascript
复制
class("a")
class(TRUE)
class(3)

比较运算的结果是逻辑值

  • , <, <=, >=, ==, != 比较运算 多个逻辑条件的连接与&、或|、非! !(4>5)
代码语言:javascript
复制
!(4>5)   #!的作用:是变否、否变是
[1] TRUE
  1. 数据类型 数值型(numeric),字符型(character),逻辑型(logical)#is.
  2. 数据结构(向量、数据框、矩阵、列表)
  3. 字符型向量必须加引号(单双皆可)不能为中文值
  4. 逻辑型(logical)包括TRUE(T)、FALSE(F)、 NA(缺失值)
  5. 判断数据类型的函数class()
  6. 数据框单独拿出来一列是向量,视为一个整体,一列只能有一种类型。
  7. 一个向量只能有一种数据类型,可以有重复值。
代码语言:txt
复制
is.numeric('4')    #是否数值型数据

is.logical(F)      #是否逻辑型数据

is.character('4')  #是否字符型数据

#.as

代码语言:txt
复制
as.numeric("4")   #转换为数值型数据  

as.logical()      #转换为逻辑型数据    

as.character()    #转换为字符型数据

3.1向量

3.1.1向量的生成

(1)用c( ) 逐一放到一起

代码语言:txt
复制
c(1,2,3)

(2)连续的数字用" :"

代码语言:txt
复制
1:5

(3)有重复的用rep(),有规律的用seq(),随机数用rnorm()

代码语言:txt
复制
rep("handsome",times = 3)

seq(from = 1,to = 100 ,by = 2)

rnorm(n = 5) #符合正态分布的随机数

(4)通过组合产生更为复杂的向量

代码语言:txt
复制
paste0(rep("gene",times = 4),1:4) #无空格连接

赋值+输出一齐实现的方法

代码语言:txt
复制
(x <- c(seq(1,10,2)))  # 法一
1 1 3 5 7 9
x <- c(seq(1,10,2));x  # 法二
1 1 3 5 7 9

初级统计函数 max() ,min() , mean() , median() ,var()方差 , sd()标准差 , sum()总和, length(x) # 长度(x中元素的个数), unique(x) #去重复(第一次出现不为重复,第二次出现为重复),duplicated(x)#检查重复值 , table(x) 重复值(因子)统计 ,sort(x) #排序 , dim() 查看行列数, nrow()查看行数,ncol() 查看列数

代码语言:txt
复制
x <- c(1,3,5,1)
unique(x)
1 1 3 5
duplicated(x)
1 FALSE FALSE FALSE  TRUE
table(x)
x
1 3 5 
2 1 1
sort(x)
1 1 1 3 5
sort(x,decreasing = T) #从大到小
1 5 3 1 1
dim(iris)
ncol(iris)

两个向量(长度一致)的操作

代码语言:txt
复制
x <- c(1,3,5,1)
y <- c(3,2,5,6)
x==y  #比较运算
1 FALSE FALSE  TRUE FALSE
x\*y  #计算
1  3  6 25  6
paste(x,y,sep = "/")
1 "1/3" "3/2" "5/5" "1/6"

两个向量(长度不一致)的操作

代码语言:txt
复制
x <- c(1,3,5,1,6)
y <- c(3,2,5)
x==y  #长度不一致,发生循环补齐
Warning: longer object length is not a multiple of shorter object length
 1 FALSE FALSE  TRUE FALSE FALSE
paste0(rep("student",time = 7),seq(from = 2,to = 15,by = 2) 
paste0("student",seq(2,15,2)) #循环补齐简化代码
1 "student2"  "student4"  "student6"  "student8" 
5 "student10" "student12" "student14"

交集,并集,差集 ,%in%

代码语言:txt
复制
x <- c(1,3,5,1,6)
y <- c(3,2,5)
intersect(x,y)
union(x,y)
setdiff(x,y)
setdiff(y,x)
x %in% y #中的元素在y中存在吗(逻辑值)

PDF文件保存的1种方式

代码语言:javascript
复制
pdf("x.pdf") #空壳

plot(x1$len,col = factor(x1$dose)) #画图

title("Have a try")

dev.off() #关掉图片编辑器,在文件中保存图片 

3.1.2向量取子集

1.逻辑值取子集 xx > 4

里是与x等长且一一对应的逻辑值向量

2.下标/位置取子集 x4 , x-4

里是由x组成的向量

  1. 修改向量中的某个或某些元素
代码语言:javascript
复制
x<-c(8:15)
[1]  8  9 10 11 12 13 14 15
x[4] <- 20 ;x
[1]  8  9 10 20 12 13 14 15
x[c(5:6)] <- 3;x
[1]  8  9 10 20  3  3 14 15

画图

代码语言:javascript
复制
k1 <- rnorm(12);k1
plot(k1) # index(位置下标)作为x, x值作为y~~删除线~~
k2 <- rep(1:6,each = 2);k2
boxplot(k1~k2) # k1作为x, k2作为y

取交集会去重复,而%in%取子集不会

赋值符号(<-) 和小于+符号,遇见要注意负号前加空格,才能区分

运行顺序

代码语言:text
复制
x <- rnorm(10)
sort(x[x<0]) #运行顺序:有嵌套的先里后外,无嵌套的从左到右
sort(x)[x<0]  #与下面的相同
#y <- sort(x)
#y[x<0]
(1:10)[c(T,F)] #循环补齐 T,F

3.2 数据结构

用class() 或is()族函数进行判断数据结构

新建数据框

data.frame(colname=data)

Error:no such file or dirextory #可能是工作目录不对,找不到这个文件

data.frame取子集1. $ df$csore 2.按坐标[] df 2,2 ,3. 按名字 df,c("gene",change") 4. 按条件 df$scoredf$score > 0, 数据框按照逻辑取子集,TURE对应的行/列留下,FALSE对应的行/列丢掉。

代码语言:text
复制
df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1
df1$gene[df1$score!=5]#取gene的方式,类似于向量取子集
df1[,length(df1)] #获取最后一列数据
df1[,-length(df1)] #删除最后一列数据

数据框修改

代码语言:text
复制
df1[3,3] <- 5 #改一个格
df1[3,] <-  c(3,3,3,3) #改一列
df1$p.value <-  c(0.1,0.1,0.1,0.1) #添加一列
df1
row.names<- c(1,2,3,4) #修改行名
代码语言:text
复制
两个数据框的连接
 merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
      incomparables = NULL, ...)

矩阵的新建和取子集

矩阵不支持$

代码语言:text
复制
 matrix(1:9,nrow = 3)
t(matrix(1:9,nrow = 3))#转置
as.data.frame(matrix(1:9,nrow = 3)) #转换为数据框
class(matrix(1:9,nrow = 3))
[1] "matrix" "array"  #  "array"是特殊的数组,不用看这个

热图

代码语言:text
复制
m <-  matrix(1:9,nrow = 3)
pheatmap::pheatmap(m) #默认聚类
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)#不聚类

列表新建与取子集

代码语言:text
复制
L <- list(m1 = matrix(1:9,nrow = 3),
          m2 = matrix(2:10,nrow = 3))

 L$m2 #列表取子集
L[[2]]  与上同

元素的“名字”-names()

代码语言:text
复制
score <- c(50,20,40,55,60)
names(score) <- c("a","w","q","f","g")
names(score)[score>54] #向量取子集

删除

rm()

rm(list=ls())

ctrl+L #清空控制台

调整顺序的方式 ac(1,3,2),

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. R的使用
  • 二.报错
    • note
      • 3.1.1向量的生成
      • PDF文件保存的1种方式
      • 3.1.2向量取子集
  • 三.数据类型与数据结构
  • 3.1向量
    • 3.2 数据结构
      • 新建数据框
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档