在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
仅用于记录R语言学习过程: 内容提要: R及R包的下载、安装; 比较好的学习网站; 向量(重要的函数:seq函数、rep函数、factor函数、gl函数、DescTools中的reorder.factor函数) 正文: 一、简介 R语言安装:一般下载最新版,网站上task views,选择可以做的主题进去,选择核心包(包名后面带有core字样的),查看reference manual(相当于是protocol) 查看二:packages RStudio : rstudio.com 网站下载 R packages ggplot2 knitr tidyr readr lubridate…. 推荐的网站:R bloggers popular searches; rdocumentation.org 专门用于做生信的 GitHub 统计之都 包的下载:在右下方的packages—install packages 中可以下载,如果勾选install dependencies 会自动下载依托包。 plot用于展示做好的图。 导入数据集:import Dataset install.packages() R的内置函数,按tab键会出现参数,dependencies,默认设置为TRUE 加载github上的包:先下载devtools扩展包,然后可帮助下载GitHub上的包,输入install_github(“包名”) 如install_github(“ lijian13/rinds”) .labpaths() 可以知道包存放的位置,不需要传入参数 R包卸载:remove.packages(“待卸载的包名”) 二、 向量
ü <-可用于赋值 ü 1:5 代表1 2 3 4 5 ü a <- c(1,2,4,3,5) 有位置之分,从1 开始 ü identical(a,z) 判断两个变量是否一致 ü c() combine,生成向量常用的函数,里面可包含数字,字母,汉字,输出时均带引号。 vector1[-c(2,5,8)],去掉(利用前面的-号)2,5,8下标位置的数字 ü [ ] 用于取数,有位置之分,从1 开始
第三节 数值型向量和逻辑性向量 数值型向量 ü x <- c(1:3,6:10) 可有如此样式 ü class 分类函数 class(x) n 会返回“numeric”,数值型函数,R中无整型和浮点型的区分,但是确实有integer函数,用于 y <- 1:3 class(y) “integer” 冒号: 重要 ü 数值型向量生成的函数或符号 n 冒号 如 x <- 1:5 n seq函数:用于生成一组具有规律的数值型向量,与sequence函数不同 u seq(from =10, to =1, by =-1) u seq(1,5,length.out = 8) length.out设置向量长度(可省略打成len);补全参数按tab键。length.out = 8分成7份 4/7,一共生成8个向量 u seq(1,5,along.with = 1:3),跟随,一共生成3个向量,1,3,5,省略了from,to [1] 1.000000 1.571429 2.142857 2.714286 [5] 3.285714 3.857143 4.428571 5.000000 seq(1,5,len=10) seq(1,5,along.with = 1:4) [1] 1.000000 2.333333 3.666667 5.000000 n rep函数:用于生成重复的数值型向量;与repeat函数不同,最好结果c()函数 1. rep(c(1,3),times=5) [1] 1 3 1 3 1 3 1 3 1 3 2. rep (c(1,3),each=5) [1] 1 1 1 1 1 3 3 3 3 3 3. rep(c(1,3),len=9) [1] 1 3 1 3 1 3 1 3 1 4. x<- rep(1,2,times=4) length(x) [1] 2 5. x <- rep(1:2,times=4) length(x) [1] 8 6. > rep(1,3,times=4) [1] 1 1 1 7. > x <- rep(c(1,2),times=4) length(x) [1] 8 逻辑型向量:TRUE OR FALSE 都是大写,简写为T F,本质也是数值型向量(因为T=1,F=0) n logit <- rep(c(TRUE,FALSE),len=5) logit <- rep(c(TRUE,FALSE),len=5) logit [1] TRUE FALSE TRUE FALSE TRUE sum(logit) [1] 3 TRUE=1,FALSE=0
n 逻辑运算符
n 返回某一范围的值 x <- seq(1,100,length.out = 20) #1-100内生成20个元素 index <- x >80 #将每个数与80比较 index #返回T和F,因为上一步是逻辑表达式,此处也可以直接把表达式x> 80 写在方括号中,而不需要index,会得到同样的结果 x[index] #返回了大于80的数值,将index作为一种特殊的下标返回到方括号当中,自动返回T的值,把F的值过滤掉 n which函数 返回下标 如which(x> 80),返回了 17 18 19 20 x[which(x > 80)] #返回了大于80的数字 字符串向量 n 要用单引号或者双引号 n 当数值和字符串用一个c()生成时,返回的数字也带有引号了,强行变成了字符串(character) class(string[3]) 返回‘character’ is.character(string) TRUE n letters R的内置向量,26个小写字母 letters[1:5] (没有等号,因为是取值)‘a’ ‘b’ ‘c’ ‘d’ ‘e’ n LETTERS R的内置向量,26个大写字母 LETTERS[24:28] ‘X’ ‘Y’ ‘Z’ NA NA NA :not available 缺失值的意思 因子型向量(分类变量,如男女,血型AB0) n 用factor()函数 u 参数character(),levels,labels = levels,exclude = NA,ordered = is.ordered(x), nmax = NA) u character:字符串 u levels 生成几个水平的因子型变量 如c(1,2) u labels 标签:代表的含义,如男性,女性 如c(‘male’,’female’) u 注意:levels和labels 必须用c() 生成,否则会报错,同时levels会返回labels标签中的内容 即返回: levels:male female。用class(my_fac) 返回’factor’ l > my_fac2 <- factor(LETTERS[1:5],labels = letters[1:5]) l > my_fac2 l [1] a b c d e l Levels: a b c d e l 打印出来的内容与labels内容一致了!!!由labels决定了打印的内容 n gl()函数 u 格式是:如:gl( n = 2, k = 5,labels = c(‘control’,’Treatment’)) u 解释:参数n接受一个正整数,表示因子水平的个数(类似levels) u k 接受一个正整数,表示labels中元素的重复的次数,类似times u len代表一共的长度,gl( n = 2, k = 1, length =8,labels = c(‘control’,’Treatment’)),结果是control和treatment一共重复4次 u u 返回的值: l [1] control control control control control l [6] treatment treatment treatment treatment treatment l Levels: control treatment n 字符串转换成因子 用as.factor() 函数 如:> temp_string <- c('A','B','AB','O') > my_fac6 <- as.factor(temp_string) > my_fac6 [1] A B AB O Levels: A AB B O
n 因子转换成字符串 用as.character()函数 如:> as.character(my_fac6) [1] "A" "B" "AB" "O"
n 向量间的转化 用as.factor() 和as.character()函数 n nlevels() 用于判断因子型变量中有多少个水平 如:nlevels(my_fac6) 返回 4 n levels() 用于返回水平的具体名称 如levels(my_fac6) 返回 ‘A’ ‘AB’ ‘B’ ‘O’ n reference 把分类变量设置成哑变量 用relevel()函数 格式: relevel(my_fac6,ref = ‘B’) > my_fac7 <- relevel(my_fac6, ref = 'B') > my_fac7 [1] A B AB O Levels: B A AB O > my_fac6 [1] A B AB O Levels: A AB B O 把B型设为了参照,与原来的my_fac6不同。需着重注意 n 直接上例子: u > x <- c('placebo','10mg','20mg','50mg') u > my_order_fac <- factor(x,ordered = T) u > my_order_fac u [1] placebo 10mg 20mg 50mg u Levels: 10mg < 20mg < 50mg < placebo 解决的办法有两个:一是把placebo换成0mg;另一种办法是加载扩展包:DescTools:可用于生成有序的分类变量 利用包中的reorder.factor()函数 办法一: > x <- c('0mg','10mg','20mg','50mg') > my_order_fac <- factor(x,ordered = T) > my_order_fac [1] 0mg 10mg 20mg 50mg Levels: 0mg < 10mg < 20mg < 50mg 办法二:格式:reorder.factor(my_order_fac,new.order = x) > library(DescTools) > x <- c('placebo','10mg','20mg','50mg') > my_order_fac2 <- reorder.factor(my_order_fac,new.order = x) > my_order_fac2 [1] <NA> 10mg 20mg 50mg Levels: placebo < 10mg < 20mg < 50mg |
请发表评论