2011-08-24 77 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徽章..? –

相关问题