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

R语言的综合应用-1

原创
作者头像
大胖橘
发布2023-03-15 21:58:02
8660
发布2023-03-15 21:58:02
举报
文章被收录于专栏:R语言 / LinuxR语言 / Linux

祝大家今天快乐~

代码语言:javascript
复制
安装包
if(!require(stringr))install.packages('stringr')
library(stringr)
代码语言:javascript
复制
rm(list = ls())  #清空环境变量
if(!require(stringr))install.packages('stringr')
library(stringr)

一、字符串

代码语言:javascript
复制
#1.检测字符串长度
str_length(x)
length(x)  #这是向量的长度  

例如 y=c("nihaoa 11","niyehaoa 22","zhangsongwen 33")

向量:y

字符串:一个引号内的所有东西 “nihaoa 11” 字符:引号内的单个字母/数字/符号

代码语言:javascript
复制
x <- "The birch canoe slid on the smooth planks." #这是一个字符串
x
#2.字符串拆分
str_split(x," ")  #以空格为分割符号将字符串拆分开,这个函数输出的结果是一个列表
x2 = str_split(x," ")[[1]];x2  #
​
y = c("jimmy 150","nicker 140","tony 152")  #这是好几个字符串组成的一个向量
str_split(y," ")
str_split(y," ",simplify = T)
代码语言:javascript
复制
#3.按位置提取字符串
str_sub(x,5,9)
代码语言:javascript
复制
#4.字符检测
★str_detect(x2,"h")    #对x2的每个元素进行检测,含有h的返回结果为TRUE,不含有的返回为FALSE。
str_starts(x2,"T")
str_ends(x2,"e")
代码语言:javascript
复制
#5.字符串替换
x2
str_replace(x2,"o","A")
str_replace_all(x2,"o","A")
代码语言:javascript
复制
# 6.字符删除
x
str_remove(x," ")
str_remove_all(x," ")

二、数据框

代码语言:javascript
复制
#1.arrange,数据框按照某一列排序
library(dplyr)
arrange(test, Sepal.Length) #从小到大
arrange(test, desc(Sepal.Length)) #从大到小
代码语言:javascript
复制
#2.distinct,数据框按照某一列去重复
distinct(test,Species,.keep_all = T)

类似与unique(给向量去重复)

代码语言:javascript
复制
#3.mutate,数据框新增一列
mutate(test, new = Sepal.Length * Sepal.Width)

注意,这样操作结束后,test还是原来的列数,因为没有给新的赋值。在R语言的世界里,没有赋值就是没有发生过。

代码语言:javascript
复制
#补充
select()、filter() 筛选列、行
类似于之前的$,[]
代码语言:javascript
复制
#管道符号(%>%),表示把前一步的运算结果传递给后一步的函数,不需要多次赋值。
x = iris %>% 
  filter(Sepal.Width>3) %>% 
  select(Sepal.Length,Sepal.Width)%>%
  arrange(Sepal.Length)

三、条件和循环★★ 如果...就...

代码语言:javascript
复制
#1
if(){}
if(){}else{}

if(一个逻辑值,不可以是多个逻辑值组成的向量){CODE1}

else

{CODE2}

当(逻辑值是TRUE时),{运行CODE1}

当(逻辑值是FALSE时),{运行CODE2}

代码语言:javascript
复制
#2
ifelse函数  
ifelse(x,yes,no)  #ifelse只有3个参数。x为逻辑值或逻辑值向量;yes为逻辑值为TRUE时的返回值;no为逻辑值为FALSE时的返回值
​
例如:
x = rnorm(3)
x
ifelse(x>0,"+","-")
代码语言:javascript
复制
#3
ifelse()+str_detect()   #可以根据关键词给样本进行分组
​
例如:
samples = c("tumor1","tumor2","tumor3","normal1","normal2","normal3")
k1 = str_detect(samples,"tumor");k1
ifelse(k1,"tumor","normal")
k2 = str_detect(samples,"normal");k2
ifelse(k2,"normal","tumor")
代码语言:javascript
复制
#4 多个条件
i = 0
if (i>0){
  print('+')
} else if (i==0) {
  print('0')
} else if (i< 0){
  print('-')
}
或者
ifelse(i>0,"+",ifelse(i<0,"-","0"))
for循环:对x向量里的每个元素i进行同一操作
代码语言:javascript
复制
for(i in x){CODE}
​
例如
x <- c(5,6,0,3)
s=0
for (i in x){
  s=s+i
  print(c(i,s))
}
或者
x <- c(5,6,0,3)
s = 0
for (i in 1:length(x)){
  s=s+x[[i]]
  print(c(x[[i]],s))
}

如何将结果存下来?

代码语言:javascript
复制
s = 0
result = list()   #先定义result是一个列表
for(i in 1:length(x)){
  s=s+x[[i]]
  result[[i]] = c(x[[i]],s)
}
#每一轮循环下来,result就多了一个元素

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • for循环:对x向量里的每个元素i进行同一操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档