可能重複:
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