根据另一列中的字符串从列创建列表

时间:2020-07-01 09:53:26

标签: r purrr tibble

以下是带有两列的标题,第一列具有关键字,第二列具有与关键字相关的字词:

    # A tibble: 14 x 2
   main_word related        
   <chr>     <chr>          
 1 car       rent car       
 2 car       buy car        
 3 car       mechanic       
 4 car       car rent       
 5 plane     plane ride     
 6 plane     plane ticket   
 7 plane     cheap flights  
 8 plane     book flight    
 9 plane     easyjet        
10 plane     lufthansa      
11 plane     british airways
12 plane     ryan air       
13 plane     air france     
14 plane     fly emirates  

我想用关键字相关关键字创建列表,我已经尝试过使用map和keep函数,但是我得到了一个空列表,我不知道该如何解决它:

a <- c(unique(data$main_word))
  words <- map(a,keep(data$related,data$main_word == a))

但是我明白了:

[[1]]
NULL

[[2]]
NULL

1 个答案:

答案 0 :(得分:1)

我们可以使用 split ,然后用 mapply 添加( c -concatenate)名称,请参见:

x <- split(data$related, data$main_word)

myList <- mapply(c, names(x), x)
myList

$car
[1] "car"      "rent car" "buy car"  "mechanic" "car rent"

$plane
 [1] "plane"           "plane ride"      "plane ticket"    "cheap flights"  
 [5] "book flight"     "easyjet"         "lufthansa"       "british airways"
 [9] "ryan air"        "air france"      "fly emirates" 

数据

data <- read.table(text = "
main_word,related
car,rent car
car,buy car
car,mechanic
car,car rent
plane,plane ride
plane,plane ticket
plane,cheap flights
plane,book flight
plane,easyjet
plane,lufthansa
plane,british airways
plane,ryan air
plane,air france
plane,fly emirates", header = TRUE, sep = ",", stringsAsFactors = FALSE)