练习与作业1:字符串操作
用stringr
包实现以下操作
使用变量: x <- c('weihua', 'chen');
- 每个element/成员的长度
- 每个成员首字母大写
- 取每个成员的前两个字符
- 合并为一个字符串,用 ', ' 间隔
- 数一下每个成员中
元音字母
(vowel letter)的数量
```{r}
## 代码写这里,并运行;
require(tidyverse)
require(stringr)
x <- c('weihua', 'chen');
str_length(x)
str_to_title(x)
str_sub(x,1,2)
paste(x[1],x[2],sep=",")
sum(str_count(x[1],c("a","e","i","o","u")))
sum(str_count(x[2],c("a","e","i","o","u")))
```
用mtcars
变量作练习
- 筛选出所有的奔驰车(Mercedes-Benz);
- 筛选出所有非奔驰车;
- 处理行名,将其中的品牌与车型分开。比如:Mazda RX4 Wag => 'Mazda', 'RX4 Wag'
```{r}
## 代码写这里,并运行;
benz <- mtcars %>% subset(str_detect( rownames(mtcars),"Merc")==T)
benz
notbenz <- mtcars %>% subset(str_detect( rownames(mtcars),"Merc")==F)
notbenz
str_split(rownames(mtcars)," ",2)
```
练习与作业2:regular expression 正则表达式练习
用starwars
变量作练习
注:需要先导入 tidyverse
包;
- 选出所有
skin_color
包含为white
的人,显示其name
,homeworld
,species
和skin_color
;注意:有些人的skin color 可为多个; - 打印出所有含有
ar
的名字;不区分大小写;
```{r}
## 代码写这里,并运行;
starwarsrk2_1 <- subset(starwars,str_detect(skin_color,"white")==T,
select=c(name,homeworld,species,skin_color))
starwarsrk2_1
subset(starwars,str_detect(name,"ar")==T,select = name)
```
用下面的vec
变量作练习
vec <- c( "123", "abc", "wei555hua666" );
- 找出含有数字的字符串;
- 找出数字的位置;如果字符串含有多组数数字,只显示第一组;
- 找出所有数字的位置;
- 提取出找到的数字;如果字符串含有多组数数字,只提取第一组;
- 提取所有的数字;
- 将数字替换为 666;
```{r}
## 代码写这里,并运行;
vec <- c( "123", "abc", "wei555hua666" );
vec[grep( "\\d+",vec )]
vec %>% str_locate("\\d+")
vec %>% str_locate_all("\\d+")
vec %>% str_extract("\\d+")
vec %>% str_extract_all("\\d+")
str_replace( vec, "\\d+", "666");
```
练习与作业3:探索题
序列分析
用序列:seq <- "ATCTCGGCGCGCATCGCGTACGCTACTAGC"
实现以下分析;注:可使用任何包:
- 得到它的反向互补序列;
- 计算它的GC含量,用百分数表示;
- 把它拆分成一个个codon(即三个nucleotide形成一个codon;最后一个长度可以不为3;
```{r}
## 代码写这里,并运行;
seq <- "ATCTCGGCGCGCATCGCGTACGCTACTAGC"
from=c("A","T","G","C")
to =c("T","A","C","G")
names(to)=from
sep_seq=unlist(strsplit(seq,""))
complementary_seq=to[sep_seq]
rev_complementary=rev(complementary_seq)
rev_complementary_seq=paste(rev_complementary,collapse = "")
rev_complementary_seq
GCin <- sum(str_count(seq,c("G","C")))/str_length(seq) *100
GCin
str_sub(seq,c(seq(1,str_length(seq)-2,3)),c(seq(3,str_length(seq),3)))
```
问答
问:stringr::str_pad
的作用是什么?请举例回答
答:将字符串填充到指定长度
```{r}
example1 <-"This is an example"
str_pad(example1,30,side = 'both',pad = "*")
```
COMMENTS | NOTHING