可能重复:
How to sort letters in a string in R?如何对字符向量的每个元素中的字符进行排序?
我有一个数据帧,其中一个变量是一个字符串。有一种方法以产生具有相同的元件为x另一变量,但以升序每个或降序如下顺序:
x_old:(繁体,jfwd,qerf ...)
x_new: (ADRT,dfjw,efqr ...)
可能重复:
How to sort letters in a string in R?如何对字符向量的每个元素中的字符进行排序?
我有一个数据帧,其中一个变量是一个字符串。有一种方法以产生具有相同的元件为x另一变量,但以升序每个或降序如下顺序:
x_old:(繁体,jfwd,qerf ...)
x_new: (ADRT,dfjw,efqr ...)
必须有一个更简单的方法:
x <- c("trad", "jfwd", "qerf")
unname(sapply(x, function(i)paste(sort(unlist(strsplit(i, ""))), collapse="")))
[1] "adrt" "dfjw" "efqr"
完美!谢谢,安德里。 – user702432
使用虚拟数据:
strs <- c("trad", "jfwd", "qerf")
您可以用一系列的在特征向量的步骤做:
sapply( ## 3
lapply( ## 2
sapply(strs, strsplit, ""), ## 1
sort), ## 2
paste, collapse = "") ## 3
这给:
> sapply(lapply(sapply(strs, strsplit, ""), sort), paste, collapse = "")
trad jfwd qerf
"adrt" "dfjw" "efqr"
凡在功能,## 1
分裂的特征向量的每个元素成单个字符,## 2
对这些字符集进行排序,并且## 3
将它们再次粘贴到一起。
我们可以通过封装步骤到一个函数在单一步骤中执行此操作:
foo <- function(x) {
x <- strsplit(x, split = "")[[1]]
x <- sort(x)
paste(x, collapse = "")
}
其可以用作:
> sapply(strs, foo)
trad jfwd qerf
"adrt" "dfjw" "efqr"
+1解释我的单行工作原理! – Andrie
@Andrie :-D我想知道这是否会让我成为Precognitive徽章..? –
这是,实际上,相同的:HTTP:/ /stackoverflow.com/q/5904797/602276 – Andrie