r - 如何对字符串中的单词进行排序?
r - How to sort words in a string?
假设我有一个字符串数据框。
每个字符串都是一系列数字;每个字符串中可以有任意数量的数字。
如何重新排序字符串中的这些数字?
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)
如果有帮助,我不会挑剔数字与字符排序 - 即我不在乎“201 21 11”是否被排序为“11 21 201”或“11 201 21”,只要它得到一致排序。
拆分 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
试试这个:
input$new <- sapply(lapply(strsplit(input$str, " "), sort),paste,collapse=" ")
假设我有一个字符串数据框。
每个字符串都是一系列数字;每个字符串中可以有任意数量的数字。
如何重新排序字符串中的这些数字?
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)
如果有帮助,我不会挑剔数字与字符排序 - 即我不在乎“201 21 11”是否被排序为“11 21 201”或“11 201 21”,只要它得到一致排序。
拆分 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
试试这个:
input$new <- sapply(lapply(strsplit(input$str, " "), sort),paste,collapse=" ")