【问题标题】:Convert the list output to create a data.frame in dplyr pipe转换列表输出以在 dplyr 管道中创建 data.frame
【发布时间】:2017-05-29 20:39:12
【问题描述】:

我正在使用正则表达式提取模式并使用 dplyr 构建 data.frame

library (dplyr)
library (stringr)

Target <- c("@user1 lorem ipsum @user2", "@user3 lorem ipsum @user4")
Source <-  c(" lorem ipsum", "dolores")
dataset <- data.frame(Source, Target)


dataset2 <- dataset %>%
mutate (Target=str_extract_all(v1, "@\\w+"))

我的结果(data.frame):

lorem ipsum c("@user1", "@user2")
dolores     c("@user3", "@user4")

我想要的 data.frame 对象:

lorem ipsum  "@user1"
lorem ipsum  "@user2"
dolores      "@user3"
dolores      "@user4"

【问题讨论】:

    标签: r regex dplyr tidyr


    【解决方案1】:

    我们可以试试

    stack(setNames(str_extract_all(dataset$Target, "@\\w+"), dataset$Source))[2:1]
    #          ind values    
    #1  lorem ipsum @user1
    #2  lorem ipsum @user2
    #3      dolores @user3
    #4      dolores @user4
    

    或者我们可以使用来自tidyrunnest

    library(dplyr)
    library(tidyr)
    dataset %>% 
          mutate(Target = str_extract_all(Target, "@\\w+")) %>%
          unnest
    #        Source Target
    #1  lorem ipsum @user1
    #2  lorem ipsum @user2
    #3      dolores @user3
    #4      dolores @user4
    

    【讨论】:

    • 效果很好@akrun!那么,您能帮我为我的问题找到一个更好的标题吗?
    • @Wilcar 很高兴为您提供帮助。也许Convert the list output to create a data.frame
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多