美文网首页生信星球培训第八期
学习小组Day5笔记--胡莹

学习小组Day5笔记--胡莹

作者: 胡莹crystal | 来源:发表于2018-10-27 18:37 被阅读29次

很抱歉今天的作业交的很晚,昨天的学习真的是搞得我头大,总是各种出错,找不出原因,最后很晚了才刚刚把内容练习了一遍,仍旧有出错的地方,还有很多命令自己还不理解,觉得自己很笨,又不好意思总是问老师弱智的问题,最后烦躁的关机睡觉了。今天仔细的把每一个函数、命令都搜索了一遍,汇总网上的解释进行学习,这才弄懂了自己出错的原因。一方面是自己不细心,犯少个括号、引号、弄混大小写、忘记更改工作目录等这些低级错误;另一方面自己没有理解函数的含义,也没有提前搜索学习,而是先照着教程运行,这样出错了自己也不明白是为什么。今天仔仔细细重新学了一遍,用押金扣除、小组倒数第一的代价换来了自己对主动搜索学习的重视。
今天的笔记主要还是着重记录自己犯错的地方和觉得重要的知识点,其他的就简要略过。
本节内容重点学习R语言中的两个数据类型---向量数据框 .

向量

关于向量,我觉得思维导图总结的已经很全面,因此把这部分的思维导图附上。

向量
Tips: %in%
判断前面一个向量内的元素是否在后面一个向量中,返回布尔值。

代码实例

m <- c(1,3,13,1443,43,43,4,34,3,4,3)
n <- c(1,13,11,1313,434,1)
m %in% n
[1] TRUE FALSE TRUE FALSE FALSE
[6] FALSE FALSE FALSE FALSE FALSE
[11] FALSE

!m %in% n #取反操作
[1] FALSE TRUE FALSE TRUE TRUE
[6] TRUE TRUE TRUE TRUE TRUE
[11] TRUE

可以使用这个语法提取向量m中的值

m[ m %in% n]
[1] 1 13

m[!m %in% n]
[1] 3 1443 43 43 4 34 3
[8] 4 3

数据框

准备工作

  • 将教程提供的实例数据放在RData文件夹下。
    我居然忘记了自己在安装R的时候建过一个RData文件夹,以至于在这一步瞎折腾了好久,大概昨晚真的是脑子进水了吧...
  • 查看一下自己的工作路径是否正确。
    我的工作路径是电脑默认的,并不是RData路径,刚开始不知道,报错找不出原因,特别感谢同组的天天同学提醒了我。
    getwd
    setwd

读取本地数据

这里重要的是要弄懂读取命令read.table()函数。

  • read.table函数详解

read.table()函数是R最基本函数之一,主要用来读取矩形表格数据。

read.table(file = "huahua.txt",sep = "\t",header =T)

各参数的说明如下:

(1)file
file表示要读取的文件名,一个带分隔符的ASCII文本文件。
file可以是绝对路径或者相对路径,如果file参数中给定的文件名不是绝对路径,则文件名是相对于当前R的工作目录给出的。
Tips:使用file.choose(),弹出对话框,让你选择文件位置。


file使用1
file使用2

该方法免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误!例如:read.table(file.choose(),...)
(2)sep
分开数据的分隔符。默认sep="",即分隔符为空白。
read.table()函数可以将1个或多个空格、tab制表符("\t")、换行符或回车符作为分隔符。
(3)header
一个逻辑值(TRUE or FALSE)。用于确定数据文件中第一行是不是标题。默认F(FALSE的简写),即认为数据文件没有标题。如果header设置为TRUE,则要求第一行要比数据列的数量少一列。

读取本地数据

设置行名和列名

  • read.csv
    读取csv格式的数据文件,是read.table函数的包装,同样接受read.table所有参数。
    和read.table有所不同的,是read.csv的默认参数有别。
    header---参数默认为TRUE
    sep---默认是逗号
  • colnames
    colnames主要是对矩阵或数据框进行列命名

代码实例:

X<-read.csv('doudou.txt') #在示例数据里有doudou.txt 注意这里的变量X是一个数据框
X
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
colnames(X)#查看列名
[1] "X1" "X2"
rownames(X)#查看行名,默认行名为行号1,2,3,......
[1] "1" "2" "3" "4" "5"
colnames(X)[1]<-"bioplanet"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令将X修改为bioplanet
X
bioplanet X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
X <- read.csv(file = "huahua.txt",sep = "\t",row.names = 1) #最后row.names的意思是修改第一列为行名
X
X2
A 1
B NA
C NA
D 3
E NA

数据框的导出

write.table(X,file = "yu.txt",sep = ",",quote = F) #分隔符改为逗号,字符串不加双引号(默认格式带由双引号)

命令运行后查看RData文件夹下面,会发现多了一个yu.txt文件。

  • write.table函数
    R语言中用于导出数据的函数
    语法
    write.table (x, file ="", sep ="", row.names =TRUE, col.names =TRUE, quote =TRUE)
    参数说明
    x:需要导出的数据
    file:导出的文件路径
    row.names:是否导出行序号,默认为TRUE,也就是导出行序号
    col.names:是否导出列名,默认为TRUE,也就是导出列名
    sep:分隔符,默认为空格(” “)
    quote:字符串是否使用引号表示,默认为TRUE,也就是使用引号表示

变量的保存与重新加载

这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData。---摘自生信星球

save.image(file="bioinfoplanet.RData")#保存当前所有变量

运行完之后查看RData文件夹,会发现多了bioinfoplanet.RData文件。


保存所有变量

save(frame1,file="frame1.RData")#保存其中一个变量

X变量保存

load("frame1.RData")#再次使用RData时的加载命令

加载X变量

提取元素

  • X[x,y]#第x行第y列
  • X[x,]#第x行
  • X[,y]#第y列(横着写,这是不够懒也不够优秀却能存在的写法)
  • X[y] #第y列(竖着写,这是懒惰又优秀的写法)
  • X[a:b]#第a列到第b列
  • X[c(a,b)]#第a列和第b列
  • X$列名#也可以提取列(优秀写法,而且这个命令还优秀到不用写括号的地步,并且支持Tab自动补全哦,不过只能提取一列)

代码实例:

x[1,1]
[1] 1
x[2,]
[1] NA
x[,2]
Error in [.data.frame(x, , 2) : undefined columns selected
x[,1]
[1] 1 NA NA 3 NA
x[1]
X2
A 1
B NA
C NA
D 3
E NA
x[1:2]
Error in [.data.frame(x, 1:2) : undefined columns selected
x[2:1]
Error in [.data.frame(x, 2:1) : undefined columns selected
x[1:1]
X2
A 1
B NA
C NA
D 3
E NA
x[c(0,1)]
X2
A 1
B NA
C NA
D 3
E NA
x$X2
[1] 1 NA NA 3 NA

直接使用数据框中的变量

我们的目标:提取某两列作散点图

  • 方法1

c <-data.frame(case=paste("S",c(1:50)),values=runif(50))
plot(case,values)

效果:


缺点:数据框名a在代码中重复出现,不够简洁高效。
-方法2---attach

attach(c)
plot(case,values)
detach(c) #将a删除搜索环境

缺点:当数据框中的列与内存中已有的对象同名时,就会产生冲突报错,因此,attach后必需接detach,将a删除搜索环境。

-方法3---with

with(c,{
+ plot(case,values)
x<<-summary(values) #求和并赋值给x,<<的意思是作为全局变量,y也就是出了with循环仍有效。
})
x #运行完后打印x

代码示例

with(c,{
+ plot(case,values)
x<<-summary(values)
})
Error in +plot(case, values) : invalid argument to unary operator #此处报错,还没搞清楚原因......
x
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA

对比attach
attach当数据框中的列与内存中已有的对象同名时,就会产生冲突报错,因此,attach后必接detach。
用with,则是封闭在数据框的环境中进行运算,不会与外在环境中的对象相冲突,因此,没有以上的隐患。

总结:使用数据框中变量这块我可能还是没有搞懂,需要再研究研究。崩溃...


R-初学数据类型

相关文章

  • 学习小组Day5笔记--胡莹

    很抱歉今天的作业交的很晚,昨天的学习真的是搞得我头大,总是各种出错,找不出原因,最后很晚了才刚刚把内容练习了一遍,...

  • 学习小组Day7--胡莹

    本节主要了解测序的基础知识,我觉得重点是能够理解测序的基本原理和二代测序的流程。 一、测序历史 简单来说测序的历史...

  • 学习小组Day1笔记--胡莹

    本节课知识点 如何学习生信课程 通过知识星球上的教程【简书】(http://www.jianshu.com) 使用...

  • 学习小组Day3笔记-胡莹

    今天的内容是学习怎样在Linux环境下安装软件,这其中的主角是conda。conda相当于Linux的appsto...

  • 学习小组Day2笔记--胡莹

    折腾的第二天学习,原本昨晚在公司把今天的教程学习完了,只剩学习笔记和思维导图没有做,太晚了准备回家再做,结果到家发...

  • 学习小组Day4笔记-胡莹

    还沉浸在学会使用Linux的成就感中,今天就开始了新的挑战---R语言学习!原本做好了像Linux学习时那样各种踩...

  • 学习小组Day6笔记--胡莹

    前两天一直觉得R太难了,学的头大,通过今天的学习,终于让我摈弃前嫌,开始喜欢上了R,真的是功能强大又简洁,非常友好...

  • 学习小组Day5笔记--hui莹宋

    首先是关于赋值 x<- c(1,2,3) #常用的向量写法,意为将x定义为由元素1,2,3组成的向量x<- 1:1...

  • 学习小组Day5笔记-柏金bbj

    [学习小组Day5笔记-柏金bbj] 鼓捣了一晚上的成就,就用这个来补上d4的作业把~

  • 学习小组Day5笔记--快乐小胡

    1.向量 1.1 标量和向量的区分 首先明确“元素”的意思,元素指的是数字或者字符串等,根据它可以区分两个词:标量...

网友评论

    本文标题:学习小组Day5笔记--胡莹

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