前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R07-R语言的综合应用

R07-R语言的综合应用

原创
作者头像
坚不可崔同学
发布2024-06-15 21:47:19
520
发布2024-06-15 21:47:19
举报
文章被收录于专栏:R语言系列R语言系列

1.玩转字符串(stringr)

x <- "The birch canoe slid on the smooth planks."

str_length(x) # 1.检测字符串长度

str_split(x," ") # 2.字符串拆分(以空格隔开的字符串拆分)拆分后以列表格式呈现

str_sub(x,5,9) # 3.按位置提取字符串,提取5-9的字符

str_detect(x2,"h") # 4.字符检测

str_starts(x2,"T") # 4.字符检测,字符串是否以T开头

str_ends(x2,"e") # 4.字符检测,字符串是否以e结尾

str_replace(x2,"o","A") # 5.字符串替换,x2中的o替换为A(有重复的只替换了第一个)

str_replace_all(x2,"o","A") # 5.字符串替换,x2中的o全部替换为A

str_remove(x," ") # 6.字符删除(只删除了第一个空格)

str_remove_all(x," ") # 6.字符删除(删除全部空格)

2.玩转数据框(dplyr)

#arrange,数据框按照某一列排序

arrange(test, Sepal.Length) #从小到大(按照Sepal.Length列)

arrange(test, desc(Sepal.Length)) #从大到小(按照Sepal.Length列)

distinct(test,Species,.keep_all = T) #数据框按照某一列去重复

mutate(test, new = Sepal.Length * Sepal.Width) #数据框新增一列,名称是new,结果是Sepal.Length * Sepal.Width两列的乘积

连续的步骤

1.多次赋值,产生多个中间的变量

x1 = select(iris,-5)

x2 = as.matrix(x1)

x3 = head(x2,50)

pheatmap::pheatmap(x3)

2. 嵌套,代码不易读

pheatmap::pheatmap(head(as.matrix(select(iris,-5)),50))

3.管道符号传递,简洁明了

iris %>%

select(-5) %>%

as.matrix() %>%

head(50) %>%

pheatmap::pheatmap()

3.条件和循环

一、条件语句

if(一个逻辑值){ } 如果()中的条件T成立,{}中的函数被运行,如果F不成立,则不执行

if条件语句:如果...就...否则...

if(一个逻辑值){ CODE1} else{CODE2}

重点:ifelse函数

ifelse(x,yes,no)

x:逻辑值或逻辑值向量

yes:逻辑值为TRUE时的返回值

no:逻辑值为FASLE时的返回值

多个条件

ifelse(i>0,"+",ifelse(i<0,"-","0"))

#如果i>0输出“+”,否则执行判断是否<0,T则输出“-”,F则输出0(套娃模式)

二、for循环

for(i in x){CODE} # 对x里的每个元素i进行同一操作

for( i in 1:4){

print(i)

}

#对1:4中的每个元素进行循环输出

批量画图

par(mfrow = c(2,2))

for(i in 1:4){

plot(iris,i,col = iris,5)

}

批量装包

pks = c("tidyr","dplyr","stringr")

for(g in pks){

if(!require(g,character.only = T))

install.packages(g,ask = F,update = F)

}

4.隐式循环

矩阵/数据框的隐式循环---apply

apply(X, MARGIN, FUN, …)

#其中X是数据框/矩阵名;

#MARGIN为1表示行,为2表示列,FUN是函数

#对X的每一行/列进行FUN函数

test<- iris[1:6,1:4]

apply(test, 2, mean)

apply(test, 1, sum)

向量/列表的隐式循环---lapply

lapply(list, FUN, …)

#对列表/向量中的每个元素实施相同的操作

lapply(1:4,rnorm) #对1:4中的每个元素进行rnorm操作

5.数据框的连接

inner_join #取交集连接

full_join #全连接

left_join(test1,test2,by="name") #左连接,左边表中的name为连接标准

right_join(test1,test2,by="name") #右连接,右边表中的name为连接标准

查询
查询

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.玩转字符串(stringr)
  • 2.玩转数据框(dplyr)
    • 连续的步骤
      • 1.多次赋值,产生多个中间的变量
      • 2. 嵌套,代码不易读
      • 3.管道符号传递,简洁明了
  • 3.条件和循环
    • 一、条件语句
      • if条件语句:如果...就...否则...
    • 重点:ifelse函数
      • 多个条件
        • 二、for循环
          • 批量画图
            • 批量装包
            • 4.隐式循环
              • 矩阵/数据框的隐式循环---apply
                • 向量/列表的隐式循环---lapply
                • 5.数据框的连接
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档