r - 如何对字符串中的单词进行排序?

时间:2017-07-10 18:47:47

标签: r sorting string-operations

我们说我有一个字符串数据框。

每个字符串都是一系列数字;每个字符串中可以有任意数量的数字。

如何在字符串中重新排序这些数字?

input <- data.frame(id = c(1,2,3),str = c('400','201 17','30 1 5'),stringsAsFactors=FALSE)

desired_out <- data.frame(id = c(1,2,3),str = c('400','17 201','1 5 30'),stringsAsFactors=FALSE)

如果它有帮助,我不会挑剔数字与字符排序 - 即我不在乎是否&#39; 201 21 11&#39;排序到&#39; 11 21 201&#39;或者&#39; 11 201 21&#39;,只要它一致排序。

2 个答案:

答案 0 :(得分:3)

拆分input$str的元素,将它们转换为数字,对它们进行排序,然后将它们粘贴在一起

input <- data.frame(id = c(1,2,3),str = c('400','201 17','30 1 5'),stringsAsFactors=FALSE)
input$new_str = sapply(input$str, function(x)
    paste(sort(as.numeric(unlist(strsplit(x, " ")))), collapse = " "))
input
#  id    str new_str
#1  1    400     400
#2  2 201 17  17 201
#3  3 30 1 5  1 5 30

答案 1 :(得分:0)

试试这个:

input$new <- sapply(lapply(strsplit(input$str, " "), sort),paste,collapse=" ")