【问题标题】:How to reverse a sentence in R?如何反转R中的句子?
【发布时间】:2018-04-13 06:07:03
【问题描述】:

我想要一个函数,它接受一个字符串(不是一个向量)并反转该字符串中的单词。

例如,

rev_sentence("hi i'm five")
## [1] "five i'm hi"

我有一个函数可以反转单个字符,但不能反转本质上是一个句子的字符串。

【问题讨论】:

    标签: r reverse


    【解决方案1】:

    R中,我们可以使用strsplit在一个或多个空格处进行拆分,然后将元素和paste一起反转

    sapply(strsplit(str1, "\\s+"), function(x) paste(rev(x), collapse=" "))
    #[1] "five i'm hi"
    

    如果只有一个字符串,那么

    paste(rev(strsplit(str1, "\\s+")[[1]]), collapse= " ")
    #[1] "five i'm hi"
    

    Python 中,选项将是splitjoin 在反转后([::-1]

    " ".join("hi i'm five".split()[::-1])
    #"five i'm hi"
    

    或使用reversed

    " ".join(reversed("hi i'm five".split()))
    #"five i'm hi"
    

    数据

    str1 <- "hi i'm five"
    

    【讨论】:

    • 我的理解是——strsplit() 返回一个列表,所以实际上我们只在包含“hi”“i'm”“five”的向量上调用 function(x) ONCE .因此,整个事情发生了逆转。这是正确的吗?
    • @Jake 你是对的,strsplit 返回单个向量的list,即长度为 1。在第一种情况下,我们假设如果有很多字符串,那么它将是一个 list vector 即。长度大于 1。这就是使用 sapply 循环遍历 list 并得到相反的原因。在第二种情况下,list 通过提取第一个元素即[[1]] 转换为vector,然后将rev 直接应用于vector
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多