1.向量或因子中的元素如何调顺序
因子可以直接调,向量则是转换为因子再调。
此处核心操作是因子中的rev操作。
(1)实现倒顺序
a <- c("a","b","c","d")
reverse <- as.character(rev(factor(a)))
(2)默认排序-按照字母顺序
(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 = "")
网友评论