如何将 space 分隔的字符串强制转换为一列数字向量?

How to coerce space-delimited strings to a column of numeric vectors?

这看起来很简单,但是 none 我尝试过的方法都奏效了。

我有一个 tibble b2d 具有以下结构:

A tibble: 5 × 2
   bin    day                                                                                   
   <chr>  <chr>                                                                                 
 1 Bin_1  2 5 6 7 8 9 10 11 12 13 14 15 19 21 26 27 28 29 30                                    
 2 Bin_2  1 2 4 6 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31                         
 3 Bin_3  2 3 4 5 7 8 13 14 18 26                                                               
 4 Bin_4  19                                                                                    
 5 Bin_5  1 8 20

day是一列由整数和空格组成的字符串。我想将每个字符串转换为一个数字向量,这样 day 可以用 %in% 运算符搜索(例如 1 %in% b2d$day[[1]] returns FALSE; 25 %in% b2d$day[[2]] returns TRUE).

我想要的输出:

A tibble: 5 × 2
   bin    day      
   <chr>  <list>   
 1 Bin_1  <num [19]>
 2 Bin_2  <num [22]>
 3 Bin_3  <num [10]>
 4 Bin_4  <num [1]>
 5 Bin_5  <num [3]>

我试过的方法,没有运气:

b2d %>% mutate(day = as.numeric(unlist(strsplit(day, " "))))

b2d %>% mutate(day = as.numeric(strsplit(day, split = " ", fixed = TRUE)[[1]]))

当它被 unlisted 时,它将取消列出整个列表。我们可能需要用 map 遍历列表并转换为 numericmapreturns一个list

library(dplyr)
library(purrr)
b2d %>%
   mutate(day = map(strsplit(day, " "), as.numeric))