关于向量、数据框和字符串的排序
今天是生信星球陪你的第179天
你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。
你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。
终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!
1.向量或因子中的元素如何调顺序
因子可以直接调,向量则是转换为因子再调。
此处核心操作是因子中的rev操作。
(1)默认排序-按照字母顺序
(2)实现倒序
a <- c("a","b","c","d")
reverse <- as.character(rev(factor(a)))
(3)按照levels排序
sort(factor(a),levels=c("a","d","c","b"))
2.数据框中的行和列如何调顺序
#行
arrange(faithful,waiting)
#列
select(faithful,2,1)
#如果只想把某列提前,后面可加everthing
select(flights,3,everything())
3.字符串abcd倒序输出为dcba?
涉及到排序,两个思路,向量或因子,这里还有一个要用到的操作就是字符串的拆分和组合。
方法一:利用向量
a <- "abcd"
n <- str_length(a)
b <- substring(a,1:n,1:n)
reverse<-str_c(b[min_rank(desc(b))],collapse = "")
这是对单个字符串的操作,如果有多个字符串,该如何同时排序?
秀一下正则表达式。
字符串较短时:
f<-("abc","bca","xyz")
reverse<-str_replace(f,"([^ ]+)([^ ]+)([^ ]+)","\3\2\1")
字符串较长时,用这个操作则显得非常丑。
经过一番探究我写了如下代码,用replace调整顺序
f <- c("abcdefgh","bcdefghi","cdefghij")
n=str_length(f[1])
g <- c(rep("([^ ]+)",times=n))
g2 <- str_c(g,collapse = "")
h <- str_c(n:1,collapse = "\")
h2 <- str_c("\",h)
str_replace(f,g2,h2)
正在我写的非常开心时,豆豆伸过个脑袋说,花花我举手,我要补充一个新方法:stri_reverse()
a <- c("a","ab","abc")
stringi::stri_reverse(a)
#[1] "a" "ba" "cba"
嗯,原来stringi里有个直接倒个的函数啊。我可以倔强地认为,我这个更强大,不仅可以倒序啊我可以随便调顺序!!!
方法二:利用因子
a <- "abcd"
n <- str_length(a)
d <- substring(a,1:n,1:n)
x <- factor(d)
reverse <- str_c(rev(x),collapse = "")
隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)
国内看B站,教学视频链接:https://m.bilibili.com/space/338686099
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists友情链接:
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到Bioplanet520@outlook.com,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!