学习小组笔记Day5-蘑菇

数据结构

!!!!注意事项

(1)R的赋值符号不是等号,而是<- (2)在Console 控制台输入命令,相当于Linux的命令行

(3)R的代码都是带括号的,括号必须是英文的。 (4)显示工作路径 getwd()

(5)向量是由元素组成的,元素可以是数字或者字符串。 (6)表格在R语言中改名叫数据框^_^

(7)别只复制代码,要理解其中的命令、函数的意思。函数或者命令不会用时,除了百度/谷歌搜索以外,用这个命令查看帮助:?read.table,调出对应的帮助文档,翻到example部分研究一下。

(8)数据类型(重点只有两个,剩下的不看)

向量(vector)?重要

矩阵(Matrix)

数组(Array)

数据框(Data frame)?重要

List ————————生信星球公众号

1.向量

一些概念

元素指的是数字或者字符串(用chr表示)等,根据它可以区分两个词: 标量:一个元素组成的变量

向量:多个元素组成的变量 (补充:一个向量是一排有序排列的元素,以后会用到把一个向量作为数据框中的一列的情况。)

image.png

——————生信星球公众号

image.png

——————《R语言实战2》

基本的赋值指令

x<- c(1,2,3) #常用的向量写法,意为将x定义为由元素1,2,3组成的向量。 x<- 1:10 #从1-10之间所有的整数

x<- seq(1,10,by = 0.5) #1-10之间每隔0.5取一个数 —————生信星球公众号

!!!(注意是逗号不是分号)

x<- rep(1:3,times=2) #1-3 重复2次 ————生信星球公众号

!!!seq是‘' , '' rep是'' : ''

'' , ''是几和几,'' : ''是几到几

2.从向量中提取元素

(1)根据元素位置

x[2] #x第2个元素

x[-2] #排除法,除了第2个元素之外剩余的元素

x[2:4] #第2到4个元素

x[-(2:4)] #除了第2-4个元素

x[c(1,3)] #第1个和第3个元素

!!!根据元素位置赋值,则x后面无需加赋值符号,直接加中括号即可

(2)根据值

x[x==10] #等于10的元素

x[x<0]

x[x %in% c(1,2,5)] #存在于向量c(1,2,5)中的元素

3.数据框

将示例数据放在你的工作目录下(!!!重要)

!!!如何将TXT文件导入工作目录: Rstudio中运行x=read.table(file.choose()),注:括号里不用加任何东西,然后在跳出的文件中选择所需文件

示例数据是如何获得的? (1)新建doudou.txt(记事本即可新建),输入以下

X1,X2

A,1

B, C,

D,3 E,

截图中显示的NA表示空值,所以空着就好。

将示例数据txt放在工作目录下后, 用以下命令即可获得示例数据框: X<-read.csv('doudou.txt')

读取本地数据

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

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

!!!sep为文件中的字段分隔符,!!!要和seq区分开;header为逻辑关系 T或者F(所代入excel数据,第一行是否用作列名称。true则excel第一行用于列名称,具体数据从第二行开始,false则第一行即为具体数据)

(2)设置行名和列名

X<-read.csv('doudou.txt') #在示例数据里有doudou.txt 注意这里的变量X是一个数据框

!!!csv含义:

在 R 语言中,我们可以从存储在 R 语言环境外的文件中读取数据。 我们还可以将数据写入将被操作系统存储和访问的文件。 R 语言可以读取和写入各种文件格式,如csv,excel,xml等。。csv 文件是一个文本文件 ————W3Cschool

colnames(X) #查看列名

rownames(X) #查看行名,默认值的行名就是行号,1.2.3.4...

colnames(X)

1<-"bioplanet"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令来修改

X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)#最后row.names的意思是修改第一列为行名

(3)数据框的导出

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

(4)变量的保存与重新加载

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

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

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

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

(5)提取元素

  • 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自动补全哦,不过只能提取一列)
本文转载于网络 如有侵权请联系删除

相关文章

  • 测开新手学自动化:分享几点构建自动化测试框架经验

    一、开头说两点 传统软件测试行业是以手工测试为主,也就是所谓的点点点,加上国内软件公司不注重测试,受制于大环境影响等也就给了大众一种测试人员虽然身处互联网行业,却是毫无技术可言的工种。话锋一转,到了如今,不得不说一声:大人,时代变了,最直观的表现莫过于招聘要求的提高,越来越要求测试人员拥有七十二变的能力。而在这其中,自动化测试能力是现在手工测试迈向更高技术岗位的必经之路。大家好,我是黎潘,我又来了,作为一名行业新手,我也是兴致满满,选择了当下较为火热,且入门简单的Python语言作为我迈向自动化测试工程师的重要帮手。所以以下讨论的皆是与python相关的如何实现自动化的总结,当然肯定不止这一门语言可以实现,最好与实际项目需求和个人能力相结合,选择最适合自己的自动化测试之路。二、初识自动化测试广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看作是自动化。狭义上来讲,通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。通俗易懂点就是一切能代替手工来执行测试用例,提高效率,不断回归的测试方法,在我

  • POJ 1200 Crazy Search 查找有多少种不同的子串(hash)

    1.采用map解题把子串插入map,map自动去重,最后输出map的size 结果是超时的。 超时代码:/** *@description:http://poj.org/problem?id=1200,采用map解题 *@author:michaelming *@date:2019/5/816:14 *@modifiedby: */ #include<iostream> #include<stdio.h> #include<map> #include<string> usingnamespacestd; intmain() { size_tsublen,diffchar; scanf("%d%d",&sublen,&diffchar); map<string,int>substring; stringstr,substr; cin>>str; size_tlen=str.size(); for(size_ti=0,j=i+sublen-1;j<len;i++,j++) {

  • python函数——字典设置默认值get() 与 setdefault()区别

    在python中get()以及setdefault()都可以达到默认值的作用,但是功能不一样,接下来将用示例对其做说明和解释。示例代码我们将使用dict_1、dict_2两个字典分别进行get()和setdefault()操作,观察每一步的观察值。初始化>>>dict_1={} >>>dict_2={}复制使用get()和setdefault()操作>>>dict_1.get("name","wangcongying") 'wangcongying' >>>dict_2.setdefault("name","wangcongying") 'wangcongying'复制返回值均是设置的默认值,但是我们把字典打印出来:>>>dict_1 {} >>>dict_2 {'name':'wangcongying'}复制这下看到区别

  • 2015javaB组第五题表格计算

    第五题: 标题:表格计算某次无聊中,atm发现了一个很老的程序。这个程序的功能类似于Excel,它对一个表格进行操作。 不妨设表格有n行,每行有m个格子。 每个格子的内容可以是一个正整数,也可以是一个公式。 公式包括三种:SUM(x1,y1:x2,y2)表示求左上角是第x1行第y1个格子,右下角是第x2行第y2个格子这个矩形内所有格子的值的和。AVG(x1,y1:x2,y2)表示求左上角是第x1行第y1个格子,右下角是第x2行第y2个格子这个矩形内所有格子的值的平均数。STD(x1,y1:x2,y2)表示求左上角是第x1行第y1个格子,右下角是第x2行第y2个格子这个矩形内所有格子的值的标准差。标准差即为方差的平方根。 方差就是:每个数据与平均值的差的平方的平均值,用来衡量单个数据离开平均数的程度。公式都不会出现嵌套。如果这个格子内是一个数,则这个格子的值等于这个数,否则这个格子的值等于格子公式求值结果。输入这个表格后,程序会输出每个格子的值。atm觉得这个程序很好玩,他也想实现一下这个程序。「输入格式」 第一行两个数n,m。 接下来n行输入一个表格。每行m个由空格隔开的字符串,分别表

  • 医学图像处理案例(十三)——快速行进算法分割医学图像

    今天将分享使用快速行进算法(FastMarching)对医学图像分割案例。1、FastMarching简介 快速行进方法(FastMarching)是水平集演化方法的一种简化形式,其仅使用正速度项来控制微分方程,生成的水平集轮廓随着时间增长。在实际中,FastMarching算法可以看作是由速度图像控制的高级区域增长分割方法。该算法具体推导请参考原文连接。2、使用SimpleITK函数来实现FastMarching分割算法用FastMarching算法分割有5个步骤:(1)、首先使用各向异性扩散方法对输入图像进行平滑处理;(2)、其次对平滑后的图像进行梯度计算,生成边缘图像,在梯度计算过程中可调节高斯sigma参数,来控制水平集减速到接近边缘;(3)、然后使用逻辑回归(Sigmoid)函数对边缘图像进行线性变换,保证边界接区域近零,平坦区域接近1,回归可调参数有alpha和beta;(4)、接着手动设置置FastMarching算法的初始种子点和起始值,该种子点是水平集的起始位置。FastMarching的输出是时间跨度图,表示传播的水平集面到达的时间;(5)、最后通过阈值方法将Fas

  • python第三库安装方法记录

    一、Python包管理工具  Python包管理工具,可以很方便的安装第三方模块1.setuptools下载地址:https://pypi.python.org/pypi/setuptools/ setuptools-24.0.3.tar.gz的下载地址:   https://pypi.python.org/packages/84/24/610d8bb87219ed6d0928018b7b35ac6f6f6ef27a71ed6a2d0cfb68200f65/setuptools-24.0.3.tar.gz1)Ubuntu安装:sudoapt-getinstallpython-setuptools   2)CentOS安装:   tarzxvfsetuptools-24.0.3.tar.gz   cdsetuptools-24.0.3   pythonsetup.pybuild   pythonsetup.pyinstall3)windows安装:先下载ez_setup.py,命令行进入其目录,执行  pythonsetup.pybuild  pythonsetup.pyinstall目

  • Redis总结

    文章目录1.Redis1.1.数据库的分类1.2.what1.3.特点1.4.Redis安装1.4.1.第一种yum安装1.4.1.1.常用命令1.4.2.编译安装1.4.2.1.配置环境变量1.5.启动客户端1.6.Redis提供了5中数据类型1.7.keys*1.8.String类型命令1.8.1.SET1.8.2.get1.8.3.del1.8.4.append1.8.5.decr1.8.6.decrby1.8.7.incr1.8.8.incrby1.8.9.incrbyfloat1.8.10.strlen1.8.11.mset1.8.12.mget1.9.Hash类型1.9.1.hset1.9.2.hget1.9.3.hdel1.10.List列表1.10.1.lpush1.10.2.LPOP1.10.3.rpush1.10.4.rpop1.10.5.LLEN1.10.6.BRPOP1.10.7.BLPOP1.11.Set集合1.12.SortedSet有序集合1.13.Java操作Redis1.13.1.添加依赖1.13.2.测试1.14.Redis解决Session共享1.

  • 分别开放不同的接口给OC和Swift

    最近使用Swift编写Framework,遇到有一些方法想单独开放给OC,另一些单独开放给Swift使用,之所以有这样的想法都是归于Swift和OC存在一定的差异性,比如强大的Swift的枚举下面用一个登陆方法举例:typealiascallBack=(_msg:String?,_error:Error?)->Void @objcfuncloginBy(mobile:String,mobileArea:String,password:String,callBack:callBack) @objcfuncloginBy(email:String,password:String,callBack:callBack)复制因为手机登陆(需要国家码(中国+86))和邮箱登陆的差异性,只能开放出去两个接口如果单独是Swift使用我们可以利用Swift的Enum合成一个并且看起来更加简洁的接口:enumLoginType{ casemobile(_mobile:String,mobileArea:String,password:String,callBack:callBack) casee

  • Redshift_Kinesis_Qubole_Bluedata_大数据产品介绍

    导语:通俗介绍国外部分不同形态的大数据服务产品

  • 机器学习算法检测分析辐射损伤,速度和准确率均胜过人类

    编译:chux出品:ATYUN订阅号威斯康星大学麦迪逊分校和橡树岭国家实验室的研究人员训练计算机,使其快速一致地检测和分析核反应堆材料的微观辐射损伤,并且计算机在这项艰巨的任务中表现胜过人类。今年从威斯康星大学麦迪逊分校获得材料科学与工程硕士学位的WeiLi表示,“机器学习具有很大的潜力,可以改变当前的,以人为本的显微镜图像分析方法。”材料科学中的许多问题都是基于图像的,但很少有研究人员具有机器视觉方面的专业知识,使图像识别和分析成为主要的研究瓶颈。Li意识到他可以利用最新计算技术的训练来帮助缩短人工智能和材料科学研究之间的差距。Li与橡树岭职员科学家KevinField和威斯康星大学麦迪逊分校材料科学与工程教授DaneMorgan在分析对潜在核反应堆材料的损伤时,发现机器学习胜过经验丰富的人。他们在7月18日发表在npjComputationalMaterials期刊上的论文中描述了这一方法。机器学习使用统计方法来指导计算机改进其在任务上的表现,而无需接收来自人的任何明确指导。从本质上讲,机器学习教导计算机自学。Morgan表示,“在未来,我相信来自许多仪器的图像将通过机器学习算法进

  • Python多线程编程基础2:如何创建线程

    Python标准库threading中的Thread类用来创建和管理线程对象,支持使用两种方法来创建线程:1)直接使用Thread类实例化一个线程对象并传递一个可调用对象作为参数;2)继承Thread类并在派生类中重写__init__()和run()方法。创建了线程对象以后,可以调用其start()方法来启动,该方法自动调用该类对象的run()方法,此时该线程处于alive状态,直至线程的run()方法运行结束。下面演示第一种创建线程的方法:importthreadingdefdemo(start,end):foriinrange(start,end):print(i)#创建线程t=threading.Thread(target=demo,\args=(3,6))#启动线程t.start()运行结果:345下面演示第二种创建线程的方法:fromthreadingimportThreadclassMyThread(Thread):def__init__(self,\begin,\end):#调用基类构造方法初始化Thread.__init__(self)#初始化self.begin=be

  • 腾讯云数据万象二维码识别AI内容识别

    功能描述数据万象二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的URL或文本),并可对识别出的二维码添加马赛克。 请求一:上传时识别图片上传时识别二维码的请求包与COS简单上传文件接口一致,只需在请求包头部增加图片处理参数Pic-Operations,并将请求Host更改为对象存储域名即可。 请求示例PUT/<ObjectKey>HTTP/1.1 Host:<BucketName-APPID>.cos.<Region>.myqcloud.com Date:GMTDate Authorization:AuthString Pic-Operations:<PicOperations>复制 说明: COS简单上传文件接口,详细请参见PUTObject文档。 Authorization:AuthString(详情请参见请求签名文档)。 通过子账号使用时,需要授予相关的权限,详情请参见授权粒度详情文档。 请求头此接口仅使用公共请求头部,详情请参见公共请求头部文档。 请求参数此接口

  • 跨平台客户端Blazor方案尝试

    一、方案选择 Electron/MAUI+Blazor(AntDesginblazor) BlazorApp:BlazorRazor页面层,抽象独立层,被BlazorAppElectron/BlazorAppMAUI项目引用 BlazorAppElectron:Electron跨平台客户端层 BlazorAppMAUI:MAUI跨平台客户端层 二、BlazorApp创建 首页欢迎页面组件 三、BlazorAppElectron创建 Electron.NET文档:https://github.com/ElectronNET/Electron.NET AntDesgin文档:https://github.com/ant-design-blazor/ant-design-blazor 3.1、使用BlazorServer模板,创建项目 3.2、Electron配置 3.2.1、初始化项目 命令行工具安装 dotnettoolinstall--globalElectronNET.CLI复制 项目目录下,执行下面命令 electronizeinit复制 launchSettings.jso

  • leetcode 342. 4的幂(python)

    1.题目描述   给定一个整数(32位有符号整数),请编写一个函数来判断它是否是4 的幂次方。 示例1: 输入:16输出:true示例2: 输入:5输出:false 2.思路   参考:https://blog.csdn.net/weixin_40163242/article/details/97396427。 3.代码 classSolution: defisPowerOfFour(self,num:int)->bool: temp=num&(num-1); #主要是要看num的奇数位上是否有1 if(num>0andtemp==0andnum&0x55555555)!=0: returnTrue else: returnFalse复制  

  • leetcode-64-最小路径和

    题目描述: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 输入: [  [1,3,1], [1,5,1], [4,2,1] ] 输出:7 解释:因为路径1→3→1→1→1的总和最小。复制 要完成的函数: intminPathSum(vector<vector<int>>&grid)    说明: 1、给定一个二维数组grid,表示一个网格中所有点的代价,要找到一条从网格左上角到右下角的路径,只能向下走,或者向右走,使得这条路径上的代价的和最小。 最后返回这个最小的代价和。   2、这道题如果使用暴力穷举法,除了最后一行的元素和最后一列的元素都只有一种选择外(右下角元素没有选择),其余元素都有两种选择。 比如第一行第一列的元素1,可以选择往右走或者往下走,两种选择。 当网格变大之后,穷举法太耗时了。因此我们采用其他方法。   学习过算法设计的同学一看这道题应该就能

  • apache Alias使用问题

    今天在配置apache的过程中,使用了Alias,但是由于配置错误导致403forbidden错误,不能正常访问。 首先理解一下Alias,Alias就是别名的意思,假如我的项目目录在/home/web/test下,可以通过配置的域名http://test.com/xxx可以正常访问test目录下的所有内容,但是在项目开发过程中,由于一些原因导致一些文件想存放于/home/web/statics下,但是也想通过 http://test.com/statics/xxx,访问位于/home/web/statics下的文件,就可以使用apache提供的Alias了。 其次,使用Alias非常方便的就可以实现上面的需求了,通过在刚在配置的test.com域名的vhosts中进行添加 Alias/statics"/home/web/statics/" <Directory"/home/web/statics/"> AllowOverrideNone OptionsNone Orderallow,deny Allowfromall </Directory> 复制 &nb

  • IPFS如何构建下一代互联网?

    IPFS如何构建下一代互联网?   尽管很多人对IPFS已经耳熟能详了,但是还是有很多人没有搞懂IPFS到底是什么?IPFS到底有什么用?IPFS与Filecoin之间是什么关系?最近我们社群里又新来了很多小伙伴,矿哥在这里就再给大家重新回顾下IPFS的一些基本概念。       现在的互联网怎么了?   我们现在的互联网到底怎么了?我们为什么需要IPFS构建一个新的互联网?我们如今使用的互联网是在http或https协议下运行的,http协议也就是超文本传输协议,是用于从服务器传输超文本到本地浏览器的传送协议,从1990年发布至今已经近30年了,它对于目前互联网的爆炸性成长居功至伟,成就了互联网的繁荣。但是http协议是基于C/S架构下的互联网通信协议,其基于主干网络中心化运行的机制,也存在诸多弊端。首先,难以永久保存文件。据统计,目前互联网上的web页面平均保存寿命只有100天左右,这也就是为何一些网站总会出现“404错误”的原因,我们上传到百度云盘,网易邮箱等平台的内容,会因为该平台的跑路、该域名的消失、年代久远以及遭受攻击等,而

  • linux下使用ps批量kill进程

    psax|grepnode|awk'{print$1}'|xargskill

  • mybatis-generator:自定义插件之分页、序列化、集成lombok

    0.需求 在我们使用mybatis-generator的过程中,往往其自带的功能不能够满足我们的需求。 此时我们就需要进行插件开发了。 1.准备工作 新建一个Maven项目,引入依赖mybatis-generator-core 2.开发分页 在mysql中,我们一般使用limit来实现分页 之前的做法是在mybatis-generator生成完成之后手动在Example中两个属性,offset,rows 然后在xml中添加条件判断,追加limit。 这里我们就通过这个思路在开发分页插件。 importorg.mybatis.generator.api.IntrospectedTable; importorg.mybatis.generator.api.PluginAdapter; importorg.mybatis.generator.api.dom.java.*; importorg.mybatis.generator.api.dom.xml.Attribute; importorg.mybatis.generator.api.dom.xml.TextElement; import

  • SpringBoot系列(十一)拦截器与拦截器链的配置与使用详解,你知道多少?

    往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 SpringBoot系列(五)Mybatis整合完整详细版 SpringBoot系列(六)集成thymeleaf详解版 Springboot系列(七)集成接口文档swagger,使用,测试 SpringBoot系列(八)分分钟学会Springboot多种解决跨域方式 SpringBoot系列(九)单,多文件上传的正确姿势 SpringBoot系列(十)优雅的处理统一异常处理与统一结果返回 目录 1.拦截器介绍 2.自定义拦截器 3.拦截器注入适配器 4.controller测试 5.测试 6.扩展内容:拦截器链 7.总结 1.拦截器介绍  拦截器是在servlet执行之前执行的程序(这里就是controller代码执行之前),它主要是用于拦截用户请求并作相应的处理,比如说可以判断用户是否登录,做相关的日志记录,也可以做权限管理。  SpringBoot中的拦截器实现和s

  • MFC下获取系统内存和当前进程的内存使用情况

    GlobalMemoryStatusEx来获取系统的内存使用情况 GetProcessMemoryInfo获取某个进程的内存使用情况。和任务管理器看到的是一样的。 具体代码如下: voidGetSystemMemoryInfo() { CStringstrInfo; MEMORYSTATUSEXstatex; statex.dwLength=sizeof(statex); GlobalMemoryStatusEx(&statex); DWORDLONGphysical_memory=statex.ullTotalPhys/(1024*1024); DWORDLONGavalid_memory=statex.ullAvailPhys/(1024*1024); DWORDLONGvirtual_totalmemory=statex.ullTotalVirtual/(1024*1024); DWORDLONGvirtual_memory=statex.ullAvailVirtual/(1024*1024); DWORDLONGusePhys=physical_memory-ava

相关推荐

推荐阅读