2011-08-24 72 views

回答

3

必須有一個更簡單的方法:

x <- c("trad", "jfwd", "qerf") 
unname(sapply(x, function(i)paste(sort(unlist(strsplit(i, ""))), collapse=""))) 
[1] "adrt" "dfjw" "efqr" 
+0

完美!謝謝,安德里。 – user702432

5

使用虛擬數據:

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

+1解釋我的單行工作原理! – Andrie

+0

@Andrie :-D我想知道這是否會讓我成爲Precognitive徽章..? –

相關問題