Reputation: 285
I want a function that takes a string (NOT a vector) and reverses the words in that string.
For example,
rev_sentence("hi i'm five")
## [1] "five i'm hi"
I have a function that reverses individual characters, but not something that will reverse a string that's essentially a sentence.
Upvotes: 9
Views: 2860
Reputation: 18612
Here is a similar answer, but using tidyverse
functions:
x <- paste("hi i'm", c("five", "six", "seven"))
library(stringr)
purrr::map_chr(x, ~ str_flatten(rev(str_split_1(.x, "\\s")), " "))
# "five i'm hi" "six i'm hi" "seven i'm hi"
Upvotes: 0
Reputation: 886948
In R
, We can use strsplit
to split at one or more spaces and then reverse the elements and paste
it together
sapply(strsplit(str1, "\\s+"), function(x) paste(rev(x), collapse=" "))
#[1] "five i'm hi"
If there is only a single string, then
paste(rev(strsplit(str1, "\\s+")[[1]]), collapse= " ")
#[1] "five i'm hi"
In Python
, the option would be to split
and join
after reversing ([::-1]
)
" ".join("hi i'm five".split()[::-1])
#"five i'm hi"
Or use the reversed
" ".join(reversed("hi i'm five".split()))
#"five i'm hi"
str1 <- "hi i'm five"
Upvotes: 10