美文网首页
一、R与数据类型

一、R与数据类型

作者: 白米饭睡不醒 | 来源:发表于2021-01-14 18:02 被阅读0次

在R Studio 中新建项目(R project)

File → New Project → New Directory → New Project → Directory name(填英文名不能有中文空格和特殊字符) → Create project as subdirectory of(选择路径) → Create
结果:如图右下角有新建文件夹、右上角有text1且电脑路径内也有该文件夹


image.png

新建脚本

File → New File → R Script


image.png

脚本的运行方式

  1. 逐行运行:光标放在一行的任意位置
  2. 选中运行:选中全部运行
    快捷键: Windows是Ctrl + Enter Mac是cmd + Enter
    使用“#”为脚本添加注释

脚本的保存

离脚本第一行最近的保存为脚本的保存,保存后命名(.R结尾)(脚本默认位置在工作目录 R project)

getwd()#查看工作目录

R语言的几类命令响应

  1. 报错:出现 Error 就是错了,检查命令、环境,修正后重新运行
  2. 警告:出现 Warning 不用理他,忽略
  3. 没反应:看是否出现大于号,出现大于号表示运行完成了
  4. 命令正在运行:出现红色键,中止(点击红色键)或等待
  5. 命令不完整:出现加号,tab 补全命令或按 ESC 键退出
  6. 出现大片提示信息:检查是否有Error,没有就忽略
  7. R问你问题 ?[a/s/n]:必须回答,可输入n,回车

数据类型和向量

  1. 字符型:字母和数字的组合(“a” “nn” “a1”)
  2. 数值型:纯数字(1 2 3.2 )
  3. 逻辑型:TRUE/FALSE/NA (T/F/NA)
class()#判断数据类型

tips:光标放在>后面,摁向上键可修改上一条命令重新运行

== #判断是否相等
!=#判断是否不相等(不相等为TRUE)
&#与  |#或   !#非

is族函数,判断,返回值为TRUE或FALSE

is.numeric(1)# 是否数值型数据
is.logical(1) #是否逻辑型数据
is.character("a") #是否字符型数据

as族函数实现数据类型之间的转换

as.numeric(1) #将其他数据类型转换为数值型(要本来就是数字)
as.logical(1) #将其他数据类型转换为逻辑型
as.character(1)# 将其他数据类型转换为字符型

数据结构

QQ截图20210106210620.png

脚本打开是乱码的解决方案

File → Reopen with Encoding → UTF-8 → OK

向量的生成

#(1)用 c() 结合到一起
c(2,5,6,2,9) 
c("a","f","md","b")
#(2)连续的数字用冒号“:” 
1:5
#(3)有重复的用rep(), 有规律的序列用seq(),随机数用rnorm(符合正态分布的)
rep("gene",times=3)  
seq(from=3,to=21,by=3)
rnorm(n=3)
#(4)通过组合,产生更为复杂的向量。
paste0(rep("gene",times=3),1:3)
数据转换规则尽量不产生NA
2.png

对单个向量进行的操作

#(1)赋值给一个变量名
x = c(1,3,5,1) #随意的写法
x
x <- c(1,3,5,1) #规范的赋值符号 Alt+减号
x

#赋值+输出一起实现
x <- c(1,3,5,1);x
(x <- c(1,3,5,1))

#(2)简单数学计算
x+1
log(x)
sqrt(x)

#(3)根据某条件进行判断,生成逻辑型向量
x>3
x==3

#(4)初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和

length(x) #长度(指向量里的元素个数)
unique(x) #去重复(去掉后面的)
duplicated(x) #对应元素是否重复(返回哪一个位置上的数据是重复出现的,重复位置输出值为TRUE)
table(x) #重复值统计
sort(x)#排序(默认从小到大)
sort(x,decreasing=T)#从大到小排
rev(sort(x))#从大到小排

?+函数可看帮助文档

对两个向量进行的操作

x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)逻辑比较,生成等长的逻辑向量
x == y 
x %in% y #x中的元素在y中吗(以x为核心,x有几个元素返回结果就有几个元素)
#(2)数学计算
x + y
#(3)“连接“
paste(x,y,sep=":")#paste(x,y,sep="")等同于paste0
#(4)交集、并集、差集
intersect(x,y)#三个取交集可先对两个取交集,后用交集与另一个取交集
union(x,y)
setdiff(x,y)#x里面存在,y里面不存在
setdiff(y,x)#y里面存在,x里面不存在
#当两个向量长度不一致时,短的循环补齐长的
x = c(1,3,5,6,2)
y = c(3,2,5)

例:把感兴趣的30个基因从1000个基因里挑出来
思路:判断1000个里有哪些是存在于30个里的,即1000为x30为y,使用x %in% y(或intersect(x,y)取交集)

向量筛选(取子集)

[ ]:将TRUE对应的值挑选出来,FALSE丢弃,[ ]里为能单独运行的逻辑值向量,中括号里外的长度要相等,不然麻烦

x <- 8:12
#根据逻辑值取子集
x[x==10]#提取出x=10的值
x[x<12]
x[x %in% c(9,13)]#提取出在9和13中存在的x
#根据位置取子集
x[4]
x[2:4]
x[c(1,5)]
x[-4]
x[-(2:4)]

按照逻辑值:中括号里是与x等长的逻辑值向量
按照位置:中括号里是由x的下标组成的向量

修改向量中的某个/某些元素:取子集+赋值*

x[4] <- 40
x
x[x>10] <- 10
x

简单向量作图

k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
k2 = rep(c("a","b","c","d"),times = 3);k2#each和times的区别:each为a a a a b b ...  times为a b c d a b..
plot(k1)
boxplot(k1~k2) #k1纵坐标 k2横坐标 boxplot箱线图

向量匹配排序

match(x,y) 
#[1] 4 1 5 2 3 ##根据x,调整y的顺序,返回的结果是y的下标 (按x顺序排列)

相关文章

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • 一、R与数据类型

    在R Studio 中新建项目(R project) File → New Project → New Direc...

  • 【02】数据类型、导入和输出

    一、基本的数据类型 Python的数据类型与R语言的数据类型存在着一些差异。通常来说,Python常用的数据类型有...

  • R语言数据类型

    数据类型变量不会声明为某种数据类型。 变量分配有R对象,R对象的数据类型变为变量的数据类型常用R对象类型矢量列表矩...

  • R语言中的向量和标量

    R语言中最基本的数据类型是向量,与C语言家族不同,R语言中,单个数据(标量)没有单独的数据类型,它只是向量的一种特...

  • 生信学习小组Day5笔记-lamyusam_

    R语言学习 今天,了解了R中的数据类型,初步学习R语言的数据结构。 R的数据类型 向量(vector) R语言中的...

  • 学习小组Day5笔记-Tsubasa

    R的数据类型

  • Day5—刘强

    R语言的数据结构 数据类型 R语言主要数据类型如下: 向量(vector) 矩阵(Matrix) 数组(Array...

  • R语言与生信应用7-R语法-对象与属性

    R的对象数据类型与数据结构 R操作的实体在技术上来说都是对象(object)。当R在运行时,所有变量,数据,函数及...

  • R语言mode() str() class()辨析

    1、mode()会输出一个R对象的基本数据类型(模式) R可以处理的数据类型(types)(也叫模式(modes)...

网友评论

      本文标题:一、R与数据类型

      本文链接:https://www.haomeiwen.com/subject/bcqnoktx.html