学习小组Day5笔记--胡莹

很抱歉今天的作业交的很晚,昨天的学习真的是搞得我头大,总是各种出错,找不出原因,最后很晚了才刚刚把内容练习了一遍,仍旧有出错的地方,还有很多命令自己还不理解,觉得自己很笨,又不好意思总是问老师弱智的问题,最后烦躁的关机睡觉了。今天仔细的把每一个函数、命令都搜索了一遍,汇总网上的解释进行学习,这才弄懂了自己出错的原因。一方面是自己不细心,犯少个括号、引号、弄混大小写、忘记更改工作目录等这些低级错误;另一方面自己没有理解函数的含义,也没有提前搜索学习,而是先照着教程运行,这样出错了自己也不明白是为什么。今天仔仔细细重新学了一遍,用押金扣除、小组倒数第一的代价换来了自己对主动搜索学习的重视。
今天的笔记主要还是着重记录自己犯错的地方和觉得重要的知识点,其他的就简要略过。
本节内容重点学习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-初学数据类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容