转换列表输出以在 dplyr 管道中创建 data.frame
Convert the list output to create a data.frame in dplyr pipe
我正在使用正则表达式提取模式并使用 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"
我们可以试试
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
或者我们可以使用 tidyr
中的 unnest
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
我正在使用正则表达式提取模式并使用 dplyr
构建 data.framelibrary (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"
我们可以试试
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
或者我们可以使用 tidyr
unnest
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