美文网首页
[GuangZhou_Biotrainee]R2_PDF、脚本(

[GuangZhou_Biotrainee]R2_PDF、脚本(

作者: ShanSly | 来源:发表于2019-07-22 22:04 被阅读0次

step01_1_array_apply

Q:

1、用seq和array创建1个3维的数组,该数组为3行5列4层
2、对上述数组的第三个维度求五分位数

A:

a <- array(seq(from=1,to=60,by=1),dim=c(3,5,4))
a
b <- apply(a,3,fivenum)
b
Result:
     [,1] [,2] [,3] [,4]
[1,]  1.0 16.0 31.0 46.0
[2,]  4.5 19.5 34.5 49.5
[3,]  8.0 23.0 38.0 53.0
[4,] 11.5 26.5 41.5 56.5
[5,] 15.0 30.0 45.0 60.0

结果中是对每一层(第三个维度)数据求五分位数,所以有5行 (五分位数) 4列(四层)



step01_2_sapply_lapply

Q:

1、创建一个多元素的向量
2、学习一个函数file.creat,并创建以该向量为名字的文件

A:
?file.create
a <-1:3
b<-getwd()
creat_file<-function(x){file.create(paste0('./',a))} 
lapply(a,creat_file) 

step02_1_factor

Q:

1、创建大写字母A-F因子;
2、将H添加至上述因子中;
3、将B去掉,并将其从因子中去掉

A:
> tmp<-factor(LETTERS[1:6])
> tmp
[1] A B C D E F
Levels: A B C D E F
> levels(tmp) <-c(levels(tmp),'H')
> tmp
[1] A B C D E F
Levels: A B C D E F H
> tmp[7] <-'H'
> tmp
[1] A B C D E F H
Levels: A B C D E F H
> tmp<-tmp[ -2]
> tmp
[1] A C D E F H
Levels: A B C D E F H
> tmp <- droplevels(tmp)   #droplevels对不存在的levels删除
> tmp
[1] A C D E F H
Levels: A C D E F H

思路:
①添加level
②添加factor
③利用droplevels()函数删除不存在的level



step02__2_split_tapply

Q:

依据flag的landmass对name进行分组,landmass<3的name分为一组,其他的分为一组

A:
load('flag.Rdata')
flag$size <-rep('big', nrow (flag))
flag$landmass<3   ##注意  返回的是逻辑值
flag$size[flag$landmass<3] <-'small'   #在flag$size中将“flag$landmass<3”为T的结果返回
flag$size
tapply (flag$name,flag$size,c)

思路:
①审题:依照题目要求,待分组数据x为name;分组依据的标准是landmass>=3以及landmass<3
②构想分组依据的标签:landmass<3为lable1=small;landmass>=3为lable2=big
③设定符合name的全部行
④根据分组依据,进行设定
⑤利用tapply()函数进行分组设定



step03__1_while

Q:

随机生成平均值为2,sd为9的正态分布的20个数字;并while循环求当前位置前所有数据的最小值

A:

方法一:创建一个空向量,用空向量接住while的输出结果

k1 <- rnorm(20, mean = 2, sd = 9)
k1
min(1:rnorm(k1))
length(k1)
tmp <- c()
i <- 1
while (i <=length(k1)) {
  tmp[i] <- min(k1[1:i]) 
  i = i+1
}

方法二:直接print出while的输出结果(需提前了解while输出结果的数据结构)

k1 <- rnorm(20, mean = 2, sd = 9)
k1
min(1:rnorm(k1))
length(k1)

while (i <=20) {
  print(min(k1[1:i])) 
  i = i+1
}


step03__2_ifelse

Q:

生成 1:20 的数据,使用 ifelse ifelse 循环, x<=8输出‘ small ’,8<x<=15 输出 ‘medium ’,15<x<=20输出“ big ”

A:
> k1 <- seq(from=1,to=20,by=1)
> k1
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> ifelse(k1<=8,'small',ifelse(k1<=15,'medium','big'))
 [1] "small"  "small"  "small"  "small"  "small"  "small"  "small"  "small"  "medium" "medium" "medium" "medium"
[13] "medium" "medium" "medium" "big"    "big"    "big"    "big"    "big"   
> k1[k1>8&k1<=15]  #表示k1大于8小于等于15   注意用&
[1]  9 10 11 12 13 14 15


step04_1_set_sort_rank_order

Q:
A:
library(ggplot2)
a <-ToothGrowth
class(x = ToothGrowth)
colnames(x = ToothGrowth)
table(ToothGrowth$supp)
a <- a[order(a$supp,-a$len),]
说明:
①对ToothGrowth进行命名时,注意ToothGrowth的格式  
##命令:a <-data(ToothGrowth)是错误的,因为ToothGrowth)的格式就是data
##命令:a <-a <-’a <-ToothGrowth‘ 是错误的,因为’ToothGrowth ‘含义变了  就是一个字符串啊
②命令:a <- a[order(a$supp,-a$len),]  要加一个,因为对a的排序就是一个行的操作,a的数据格式为data.frame

思路:
①审题:对比前后顺序变化,发现按照len,supp两个条件进行排序的(×dose的顺序杂乱)
②选定排序函数:因为是两个条件,len,supp是两个data.frame,所以选定order
③注意细节,order返回的结果是输入数据的位置信息,而len为降序,所以要加负号,表示降序:-a$len



step05__2_character_operation`
Q1:
rm(list=ls())
options(stringsAsFactors = F)
load('pd.Rdata')
levels(pd$title) <- c(levels(pd$title),'EGF 12h replicate 3')
pd$title[12] <- 'EGF 12h replicate 3'
pd$title

[1] EGF 4h replicate 1 EGF 4h replicate 2 EGF 4h replicate 3
[4] Control for EGF 4h replicate 1 Control for EGF 4h replicate 2 Control for EGF 4h replicate 3 Control for EGF 12h replicate 1 Control for EGF 12h replicate 2 Control for EGF 12h replicate 3 EGF 12h replicate 1 EGF 12h replicate 2 EGF 12h replicate 3
13 Levels: Control for EGF 12h replicate 1 Control for EGF 12h replicate 2 ... EGF 12h replicate 3
将以上格式转换为:
"EGF_4h" "EGF_4h" "EGF_4h" "Control_EGF_4h" "Control_EGF_4h" "Control_EGF_4h" "Control_EGF_12h" "Control_EGF_12h" "Control_EGF_12h" "EGF_12h" "EGF_12h" "EGF_12h
这样的格式

A1:
rm(list=ls())
options(stringsAsFactors = F)

tmp<- as.character(pd$title)
class(tmp)  
tmp
tmp[grep('C.+4',tmp)] <- rep('Control_EGF_4h',3)
tmp[grep('^E.+4',tmp)] <- rep('EGF_4h',3)              ##去掉replicate+数字
tmp[grep('^C.+12',tmp)] <- rep('Control_EGF_12h',3)      ##去掉replicate+数字
tmp[grep('^E.+12',tmp)] <- rep('EGF_12h',3) 
tmp
Q2:

在ids.Rdata中symbol中寻找TP53

A2:
grep('TP53',ids$symbol)
grep('TP53',ids$symbol,value = T)


step05_3_match
Q1:

用merge中找到probe_id对应的symbol (在ids里面哦)

A1:
load('id.Rdata')
set.seed(0720)
id_num<- sample(1:nrow(ids),5)
id_num1 <- ids$probe_id[id_num]
library(hgu133a.db)
ids <- toTable(hgu133aSYMBOL)

class(id_num1)
id_num1 <- as.data.frame(id_num1)
class(id_num1)
colnames(id_num1) <- 'probe_id'
f<-merge(ids,id_num1 ,by='probe_id')
f

merge()输入对象的格式为data.frame;所以要判断merge的输入对象格式

Q2:

提取1255_g_at中的数字 用strsplit做练习

A2:
a <- '1255_g_at'
a <- strsplit(a,split = '_')
或者:a <- strsplit(a,split = '_')[[1]][1]
a <- unlist(a)
a[1]

相关文章

  • [GuangZhou_Biotrainee]R2_PDF、脚本(

    step01_1_array_apply Q: 1、用seq和array创建1个3维的数组,该数组为3行5列4层2...

  • [GuangZhou_Biotrainee]R语言基础_1

    补充[ZHUHAI_Biotrainee] 第一周_课堂总结内容:https://www.jianshu.com/...

  • [GuangZhou_Biotrainee]R语言基础_2

    —————————第一部分[三维数据结构]——————— 一、三维数据结构 数组概况: 二维数据结构——矩阵↓叠加...

  • 自瞄3.15

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.15【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 自瞄3.16

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.16【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 为什么会有人说引流脚本不靠谱?原来是还没了解透彻引流脚本

    引流脚本,什么是引流脚本?引流脚本怎么样?引流脚本好用吗?引流脚本靠谱吗?引流脚本是骗局吗?引流脚本效果好吗?引流...

  • Kettle11:Kettle脚本控件

    本章讲解以下三种脚本的案例01 javascript脚本02 java脚本03 执行SQL脚本 脚本 1.脚本是转...

  • 进程守护脚本

    进程守护脚本 新建脚本 编辑脚本 添加可执行权限 启动脚本

  • DoTween

    /* 项目: 脚本:校园导航管理脚本 脚本:此脚本挂载在SchoolMenuPanel上 脚本:点击二级导航按钮,...

  • UI Recorder之Android自动化

    简单介绍 之前已经进行了Web的脚本录制,脚本回放,及脚本运行。这次进行Android端脚本录制、脚本回放,及脚本...

网友评论

      本文标题:[GuangZhou_Biotrainee]R2_PDF、脚本(

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